{
  "contractName": "TokenManager",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "everHeld",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_VESTINGS_PER_ADDRESS",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ISSUE_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "vestingsLengths",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ASSIGN_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "BURN_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MINT_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxAccountTokens",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REVOKE_VESTINGS_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "vestingId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "NewVesting",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "vestingId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "nonVestedAmount",
          "type": "uint256"
        }
      ],
      "name": "RevokeVesting",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_transferable",
          "type": "bool"
        },
        {
          "name": "_maxAccountTokens",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_receiver",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "issue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_receiver",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "assign",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_receiver",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_start",
          "type": "uint64"
        },
        {
          "name": "_cliff",
          "type": "uint64"
        },
        {
          "name": "_vested",
          "type": "uint64"
        },
        {
          "name": "_revokable",
          "type": "bool"
        }
      ],
      "name": "assignVested",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        },
        {
          "name": "_vestingId",
          "type": "uint256"
        }
      ],
      "name": "revokeVesting",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_evmScript",
          "type": "bytes"
        }
      ],
      "name": "forward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isForwarder",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "canForward",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_recipient",
          "type": "address"
        },
        {
          "name": "_vestingId",
          "type": "uint256"
        }
      ],
      "name": "getVesting",
      "outputs": [
        {
          "name": "amount",
          "type": "uint256"
        },
        {
          "name": "start",
          "type": "uint64"
        },
        {
          "name": "cliff",
          "type": "uint64"
        },
        {
          "name": "vesting",
          "type": "uint64"
        },
        {
          "name": "revokable",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "onTransfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "proxyPayment",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "onApprove",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        }
      ],
      "name": "spendableBalanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        },
        {
          "name": "_time",
          "type": "uint256"
        }
      ],
      "name": "transferableBalance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f600080516020620040a8833981519152640100000000620032516200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b5062000230600080516020620040a88339815191528264010000000062003e296200023782021704565b50565b5490565b9055565b613e5d806200024b6000396000f3006080604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303f413d181146101d15780630803fac0146102135780630db3971b146102285780630f8f8b831461024f57806321cb18cd1461027d5780632914b9bd146102cc57806332f0a3b51461034e5780633e05a36d1461036357806340c10f19146103cd5780634a3931491461040057806372f8393c146104375780637e7db6e11461046857806380afdea814610496578063856222f1146104ab5780638b3dd749146104c057806397f2562a146104d55780639d4941d8146105035780639dc29fac14610531578063a1658fad14610562578063a479e508146105d6578063a51d9a8e146105eb578063b930908f14610600578063be76048814610615578063c0774df314610646578063cc872b66146106ba578063d4aae0c4146106d2578063d948d468146106e7578063da682aeb14610740578063de4796ed14610777578063e37ff29f1461078c578063e9a9c850146107c2578063ecfda432146107d7578063edc168f1146107ec578063f48c305414610801578063fa6799f214610822578063fc0c546a14610853578063fd64eccb14610868575b600080fd5b3480156101dd57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff6004351661087d565b604080519115158252519081900360200190f35b34801561021f57600080fd5b506101ff610892565b34801561023457600080fd5b5061023d6108bb565b60408051918252519081900360200190f35b34801561025b57600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff600435166108c0565b34801561028957600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff6004351660243567ffffffffffffffff6044358116906064358116906084351660a43515156108d2565b3480156102d857600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610325943694929360249392840191908190840183828082843750949750610da09650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b50610325610eac565b34801561036f57600080fd5b5061039473ffffffffffffffffffffffffffffffffffffffff60043516602435610f4a565b6040805195865267ffffffffffffffff948516602087015292841685840152921660608401529015156080830152519081900360a00190f35b3480156103d957600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166024356110d3565b005b34801561040c57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611270565b34801561044357600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff60043516602435611451565b34801561047457600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff600435166115e7565b3480156104a257600080fd5b5061023d611609565b3480156104b757600080fd5b5061023d611639565b3480156104cc57600080fd5b5061023d61166e565b3480156104e157600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff60043516611699565b34801561050f57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166116ab565b34801561053d57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166024356119cd565b34801561056e57600080fd5b5060408051602060046044358181013583810280860185019096528085526101ff95833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750611b639650505050505050565b3480156105e257600080fd5b50610325611cf3565b3480156105f757600080fd5b5061023d611db5565b34801561060c57600080fd5b5061023d611dea565b34801561062157600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435611e1f565b34801561065257600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101ff95833573ffffffffffffffffffffffffffffffffffffffff16953695604494919390910191908190840183828082843750949750611f0e9650505050505050565b3480156106c657600080fd5b506103fe600435611fc9565b3480156106de57600080fd5b506103256120bc565b3480156106f357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103fe9436949293602493928401919081908401838280828437509497506120e79650505050505050565b34801561074c57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435612215565b34801561078357600080fd5b506101ff61221e565b34801561079857600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435151560443561224f565b3480156107ce57600080fd5b5061023d612613565b3480156107e357600080fd5b5061023d612648565b3480156107f857600080fd5b5061023d61264e565b6101ff73ffffffffffffffffffffffffffffffffffffffff60043516612683565b34801561082e57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435612743565b34801561085f57600080fd5b50610325612c24565b34801561087457600080fd5b506101ff612c40565b60046020526000908152604090205460ff1681565b60008061089d61166e565b905080158015906108b55750806108b2612c45565b10155b91505090565b603281565b60006108cc8242611451565b92915050565b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b01902060009081906109138989612c49565b61091e338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109bc5781810151838201526020016109a4565b50505050905090810190601f1680156109e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff8a16600090815260036020908152604091829020548251808401909352601483527f544d5f544f4f5f4d414e595f56455354494e475300000000000000000000000091830191909152603211610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508667ffffffffffffffff168867ffffffffffffffff1611158015610af857508567ffffffffffffffff168767ffffffffffffffff1611155b60408051808201909152601381527f544d5f57524f4e475f434c4946465f44415445000000000000000000000000006020820152901515610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055925060a0604051908101604052808a81526020018967ffffffffffffffff1681526020018867ffffffffffffffff1681526020018767ffffffffffffffff168152602001861515815250600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160010160186101000a81548160ff021916908315150217905550905050610d428a8a612c6b565b60408051848152602081018b9052815173ffffffffffffffffffffffffffffffffffffffff8d16927f627ad26dcfe82ec79b33fda0ddd062f6fab9f4914acac8345f79090dfd86fb54928290030190a2509098975050505050505050565b6000610daa611cf3565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e2e578181015183820152602001610e16565b50505050905090810190601f168015610e5b5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610e7a57600080fd5b505af1158015610e8e573d6000803e3d6000fd5b505050506040513d6020811015610ea457600080fd5b505192915050565b6000610eb66120bc565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610f1957600080fd5b505af1158015610f2d573d6000803e3d6000fd5b505050506040513d6020811015610f4357600080fd5b5051905090565b6000806000806000808787600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600d81526020017f544d5f4e4f5f56455354494e4700000000000000000000000000000000000000815250901515611036576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5050505073ffffffffffffffffffffffffffffffffffffffff969096166000908152600260209081526040808320978352969052949094208054600190910154909667ffffffffffffffff8083169750680100000000000000008304811696507001000000000000000000000000000000008304169450780100000000000000000000000000000000000000000000000090910460ff1692509050565b604080517f4d494e545f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902061110f8383612c49565b61111a338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156111b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506111c28484612e61565b60408051808201909152601b81527f544d5f4d494e545f42414c5f494e435f4e4f545f414c4c4f5745440000000000602082015290151561125f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061126a8484612f20565b50505050565b600080600061127d610892565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a4544000000000000000000000000602082015290151561131a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060005460408051808201909152601881527f544d5f5452414e534645525f57524f4e475f53454e444552000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff1633146113d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff861630148061140b575073ffffffffffffffffffffffffffffffffffffffff851630145b91508115156114435761141e8585612e61565b90508015806114355750836114338742611451565b105b156114435760009250611448565b600192505b50509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812054818080805b848310156115255773ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832086845290915290208054909250611506906114c689612fc9565b600185015467ffffffffffffffff918216918181169168010000000000000000810482169170010000000000000000000000000000000090910416613079565b9050611518848263ffffffff6130f516565b935060019092019161147c565b60008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015291516115db94899493909316926370a0823192602480820193602093909283900390910190829087803b1580156115a357600080fd5b505af11580156115b7573d6000803e3d6000fd5b505050506040513d60208110156115cd57600080fd5b50519063ffffffff6131a616565b98975050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116141590565b60006116347fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b613251565b905090565b604080517f49535355455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b60006116347febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e613251565b60036020526000908152604090205481565b60008060006116b9846115e7565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611756576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061175f610eac565b925061176a83613259565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611807576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff84161515611872576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801561186c573d6000803e3d6000fd5b50611962565b508261189a73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61329316565b91506118c373ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff6133c216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515611960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b604080517f4255524e5f524f4c45000000000000000000000000000000000000000000000081529051908190036009019020611a098383612c49565b611a14338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008054604080517fd3ce77fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018890529151919092169263d3ce77fe92604480820193602093909283900390910190829087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505050506040513d6020811015611b5b57600080fd5b505050505050565b600080611b6e610892565b1515611b7d5760009150611ceb565b611b856120bc565b905073ffffffffffffffffffffffffffffffffffffffff81161515611bad5760009150611ceb565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611bd58861345a565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b83811015611c6d578181015183820152602001611c55565b50505050905090810190601f168015611c9a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611cbc57600080fd5b505af1158015611cd0573d6000803e3d6000fd5b505050506040513d6020811015611ce657600080fd5b505191505b509392505050565b600080611cfe6120bc565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610e7a57600080fd5b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b01902081565b604080517f4255524e5f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902081565b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b019020611e5b8383612c49565b611e66338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061126a8484612c6b565b6000611f18610892565b8015611fc2575060008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152915191909216916370a0823191602480830192602092919082900301818787803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b505050506040513d6020811015611fbe57600080fd5b5051115b9392505050565b604080517f49535355455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902061200482613464565b61200f338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156120ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506120b73084612f20565b505050565b60006116347f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b613251565b6060806120f43384611f0e565b60408051808201909152601281527f544d5f43414e5f4e4f545f464f525741524400000000000000000000000000006020820152901515612191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50604080516000815260016020808301828152606084018552929550919290919085019080388339505060008054835193945073ffffffffffffffffffffffffffffffffffffffff169284925081106121e657fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029091019091015261126a8383836134a5565b60019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61224961166e565b14905090565b61225761166e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156122f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506122fc613b7b565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1663f77c47916040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561237757600080fd5b505af115801561238b573d6000803e3d6000fd5b505050506040513d60208110156123a157600080fd5b505160408051808201909152601381527f544d5f544f4b454e5f434f4e54524f4c4c45520000000000000000000000000060208201529173ffffffffffffffffffffffffffffffffffffffff90911614612457576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905580156124a457806124c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6001819055508115156000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bef97c876040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561255457600080fd5b505af1158015612568573d6000803e3d6000fd5b505050506040513d602081101561257e57600080fd5b50511515146120b75760008054604080517ff41e60c50000000000000000000000000000000000000000000000000000000081528515156004820152905173ffffffffffffffffffffffffffffffffffffffff9092169263f41e60c59260248084019382900301818387803b1580156125f657600080fd5b505af115801561260a573d6000803e3d6000fd5b50505050505050565b604080517f4d494e545f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902081565b60015481565b604080517f5245564f4b455f56455354494e47535f524f4c450000000000000000000000008152905190819003601401902081565b6000805460408051808201909152601d81527f544d5f50524f58595f5041594d454e545f57524f4e475f53454e44455200000060208201529073ffffffffffffffffffffffffffffffffffffffff16331461273a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600092915050565b604080517f5245564f4b455f56455354494e47535f524f4c4500000000000000000000000081529051908190036014019020600090819061278385613c5a565b61278e338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561282b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff8616600090815260036020908152604091829020548251808401909352600d83527f544d5f4e4f5f56455354494e4700000000000000000000000000000000000000918301919091528791879182106128f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff881660009081526002602090815260408083208a845282529182902060018101548351808501909452601884527f544d5f56455354494e475f4e4f545f5245564f4b41424c4500000000000000009284019290925297507801000000000000000000000000000000000000000000000000900460ff1615156129ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508554612a39906129f9613c7b565b600189015467ffffffffffffffff918216918181169168010000000000000000810482169170010000000000000000000000000000000090910416613079565b73ffffffffffffffffffffffffffffffffffffffff808a1660008181526002602090815260408083208d8452825280832083815560010180547fffffffffffffff00000000000000000000000000000000000000000000000000169055825481517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810195909552306024860152604485018790529051959a50909316936323b872dd936064808501949193918390030190829087803b158015612b0057600080fd5b505af1158015612b14573d6000803e3d6000fd5b505050506040513d6020811015612b2a57600080fd5b50516040805180820190915260208082527f544d5f5245564f4b455f5452414e534645525f46524f4d5f524556455254454490820152901515612bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506040805188815260208101879052815173ffffffffffffffffffffffffffffffffffffffff8b16927fafc516b1509f836efdc27d64d966d14f82ef53f456f0de74c12ac8a651a084cc928290030190a25050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600190565b4390565b6060611fc28373ffffffffffffffffffffffffffffffffffffffff1683613c8d565b612c758282612e61565b60408051808201909152601d81527f544d5f41535349474e5f42414c5f494e435f4e4f545f414c4c4f5745440000006020820152901515612d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008054604080517f23b872dd00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff868116602483015260448201869052915191909216926323b872dd92606480820193602093909283900390910190829087803b158015612d9857600080fd5b505af1158015612dac573d6000803e3d6000fd5b505050506040513d6020811015612dc257600080fd5b50516040805180820190915260208082527f544d5f41535349474e5f5452414e534645525f46524f4d5f5245564552544544908201529015156120b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b60015460008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301529151939493612f1793879316916370a0823191602480830192602092919082900301818a87803b158015612edf57600080fd5b505af1158015612ef3573d6000803e3d6000fd5b505050506040513d6020811015612f0957600080fd5b50519063ffffffff6130f516565b11159392505050565b60008054604080517f827f32c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690529151919092169263827f32c092604480820193602093909283900390910190829087803b158015612f9f57600080fd5b505af1158015612fb3573d6000803e3d6000fd5b505050506040513d602081101561126a57600080fd5b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115613072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5090919050565b60008082861061308c57600091506130eb565b8386101561309c578691506130eb565b6130ac838663ffffffff6131a616565b6130cc6130bf888863ffffffff6131a616565b899063ffffffff613ce816565b8115156130d557fe5b0490506130e8878263ffffffff6131a616565b91505b5095945050505050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f570000000000000000000000000000006020820152600090838301908482101561319a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508091505b5092915050565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f5700000000000000000000000000006020820152600090819084841115613249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505050900390565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515613282576000915061328d565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806133208684613daa565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f524556455254454400000000602082015291935091508215156130eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906134518582613ddb565b95945050505050565b8051602002815290565b604080516001808252818301909252606091602080830190803883390190505090508181600081518110151561349657fe5b60209081029091010152919050565b60606000806060806134b5610892565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515613552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008061355e6120bc565b9150613568611609565b90506135738a610da0565b60408051808201909152601b81527f45564d52554e5f4558454355544f525f554e415641494c41424c450000000000602082015290965073ffffffffffffffffffffffffffffffffffffffff87161515613629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506040516060602482019081528b5160848301528b517f279cea3500000000000000000000000000000000000000000000000000000000975087928d928d928d9282916044820191606481019160a490910190602089019080838360005b8381101561369f578181015183820152602001613687565b50505050905090810190601f1680156136cc5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156136ff5781810151838201526020016136e7565b50505050905090810190601f16801561372c5780820380516001836020036101000a031916815260200191505b508481038252855181528551602091820191808801910280838360005b83811015613761578181015183820152602001613749565b505050509050019650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509350600080855160208701895af4604051935080801561386657603f3d1180156138045760203d03806020883e8601604052613860565b7f08c379a000000000000000000000000000000000000000000000000000000000865260206004870152601e60248701527f45564d52554e5f4558454355544f525f494e56414c49445f52455455524e00006044870152606486fd5b5061386f565b3d6000863e3d85fd5b50508573ffffffffffffffffffffffffffffffffffffffff167f5229a5dba83a54ae8cb5b51bdd6de9474cacbe9dd332f5185f3a4f4f2e3f4ad98b8b8660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156138f15781810151838201526020016138d9565b50505050905090810190601f16801561391e5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015613951578181015183820152602001613939565b50505050905090810190601f16801561397e5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156139b1578181015183820152602001613999565b50505050905090810190601f1680156139de5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a28296508173ffffffffffffffffffffffffffffffffffffffff16613a116120bc565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515613ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5080613ad1611609565b60408051808201909152601f81527f45564d52554e5f50524f5445435445445f53544154455f4d4f4449464945440060208201529114613b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505050505050509392505050565b613b8361166e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015613c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50613c58613c2b612c45565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff613e2916565b565b60606108cc8273ffffffffffffffffffffffffffffffffffffffff16613464565b6000611634613c88613e2d565b612fc9565b604080516002808252606080830184529260208301908038833901905050905082816000815181101515613cbd57fe5b602090810290910101528051829082906001908110613cd857fe5b6020908102909101015292915050565b600080831515613cfb576000915061319f565b50828202828482811515613d0b57fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f570000000000000000000000000000006020820152929190041461319a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b6000806000806040516020818751602089018a5afa92506000831115613dcf57805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115613e1f573d8015613e0c5760208114613e1557613e1d565b60019350613e1d565b600183511493505b505b5090949350505050565b9055565b42905600a165627a7a723058203d5d22b0922a6138a58695e5993d017b6970cf4e9ca2ee736a2026fae374426e0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303f413d181146101d15780630803fac0146102135780630db3971b146102285780630f8f8b831461024f57806321cb18cd1461027d5780632914b9bd146102cc57806332f0a3b51461034e5780633e05a36d1461036357806340c10f19146103cd5780634a3931491461040057806372f8393c146104375780637e7db6e11461046857806380afdea814610496578063856222f1146104ab5780638b3dd749146104c057806397f2562a146104d55780639d4941d8146105035780639dc29fac14610531578063a1658fad14610562578063a479e508146105d6578063a51d9a8e146105eb578063b930908f14610600578063be76048814610615578063c0774df314610646578063cc872b66146106ba578063d4aae0c4146106d2578063d948d468146106e7578063da682aeb14610740578063de4796ed14610777578063e37ff29f1461078c578063e9a9c850146107c2578063ecfda432146107d7578063edc168f1146107ec578063f48c305414610801578063fa6799f214610822578063fc0c546a14610853578063fd64eccb14610868575b600080fd5b3480156101dd57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff6004351661087d565b604080519115158252519081900360200190f35b34801561021f57600080fd5b506101ff610892565b34801561023457600080fd5b5061023d6108bb565b60408051918252519081900360200190f35b34801561025b57600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff600435166108c0565b34801561028957600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff6004351660243567ffffffffffffffff6044358116906064358116906084351660a43515156108d2565b3480156102d857600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610325943694929360249392840191908190840183828082843750949750610da09650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b50610325610eac565b34801561036f57600080fd5b5061039473ffffffffffffffffffffffffffffffffffffffff60043516602435610f4a565b6040805195865267ffffffffffffffff948516602087015292841685840152921660608401529015156080830152519081900360a00190f35b3480156103d957600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166024356110d3565b005b34801561040c57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611270565b34801561044357600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff60043516602435611451565b34801561047457600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff600435166115e7565b3480156104a257600080fd5b5061023d611609565b3480156104b757600080fd5b5061023d611639565b3480156104cc57600080fd5b5061023d61166e565b3480156104e157600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff60043516611699565b34801561050f57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166116ab565b34801561053d57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166024356119cd565b34801561056e57600080fd5b5060408051602060046044358181013583810280860185019096528085526101ff95833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750611b639650505050505050565b3480156105e257600080fd5b50610325611cf3565b3480156105f757600080fd5b5061023d611db5565b34801561060c57600080fd5b5061023d611dea565b34801561062157600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435611e1f565b34801561065257600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101ff95833573ffffffffffffffffffffffffffffffffffffffff16953695604494919390910191908190840183828082843750949750611f0e9650505050505050565b3480156106c657600080fd5b506103fe600435611fc9565b3480156106de57600080fd5b506103256120bc565b3480156106f357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103fe9436949293602493928401919081908401838280828437509497506120e79650505050505050565b34801561074c57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435612215565b34801561078357600080fd5b506101ff61221e565b34801561079857600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435151560443561224f565b3480156107ce57600080fd5b5061023d612613565b3480156107e357600080fd5b5061023d612648565b3480156107f857600080fd5b5061023d61264e565b6101ff73ffffffffffffffffffffffffffffffffffffffff60043516612683565b34801561082e57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435612743565b34801561085f57600080fd5b50610325612c24565b34801561087457600080fd5b506101ff612c40565b60046020526000908152604090205460ff1681565b60008061089d61166e565b905080158015906108b55750806108b2612c45565b10155b91505090565b603281565b60006108cc8242611451565b92915050565b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b01902060009081906109138989612c49565b61091e338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109bc5781810151838201526020016109a4565b50505050905090810190601f1680156109e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff8a16600090815260036020908152604091829020548251808401909352601483527f544d5f544f4f5f4d414e595f56455354494e475300000000000000000000000091830191909152603211610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508667ffffffffffffffff168867ffffffffffffffff1611158015610af857508567ffffffffffffffff168767ffffffffffffffff1611155b60408051808201909152601381527f544d5f57524f4e475f434c4946465f44415445000000000000000000000000006020820152901515610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055925060a0604051908101604052808a81526020018967ffffffffffffffff1681526020018867ffffffffffffffff1681526020018767ffffffffffffffff168152602001861515815250600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160010160186101000a81548160ff021916908315150217905550905050610d428a8a612c6b565b60408051848152602081018b9052815173ffffffffffffffffffffffffffffffffffffffff8d16927f627ad26dcfe82ec79b33fda0ddd062f6fab9f4914acac8345f79090dfd86fb54928290030190a2509098975050505050505050565b6000610daa611cf3565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e2e578181015183820152602001610e16565b50505050905090810190601f168015610e5b5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610e7a57600080fd5b505af1158015610e8e573d6000803e3d6000fd5b505050506040513d6020811015610ea457600080fd5b505192915050565b6000610eb66120bc565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610f1957600080fd5b505af1158015610f2d573d6000803e3d6000fd5b505050506040513d6020811015610f4357600080fd5b5051905090565b6000806000806000808787600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600d81526020017f544d5f4e4f5f56455354494e4700000000000000000000000000000000000000815250901515611036576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5050505073ffffffffffffffffffffffffffffffffffffffff969096166000908152600260209081526040808320978352969052949094208054600190910154909667ffffffffffffffff8083169750680100000000000000008304811696507001000000000000000000000000000000008304169450780100000000000000000000000000000000000000000000000090910460ff1692509050565b604080517f4d494e545f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902061110f8383612c49565b61111a338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156111b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506111c28484612e61565b60408051808201909152601b81527f544d5f4d494e545f42414c5f494e435f4e4f545f414c4c4f5745440000000000602082015290151561125f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061126a8484612f20565b50505050565b600080600061127d610892565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a4544000000000000000000000000602082015290151561131a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060005460408051808201909152601881527f544d5f5452414e534645525f57524f4e475f53454e444552000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff1633146113d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff861630148061140b575073ffffffffffffffffffffffffffffffffffffffff851630145b91508115156114435761141e8585612e61565b90508015806114355750836114338742611451565b105b156114435760009250611448565b600192505b50509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812054818080805b848310156115255773ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832086845290915290208054909250611506906114c689612fc9565b600185015467ffffffffffffffff918216918181169168010000000000000000810482169170010000000000000000000000000000000090910416613079565b9050611518848263ffffffff6130f516565b935060019092019161147c565b60008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015291516115db94899493909316926370a0823192602480820193602093909283900390910190829087803b1580156115a357600080fd5b505af11580156115b7573d6000803e3d6000fd5b505050506040513d60208110156115cd57600080fd5b50519063ffffffff6131a616565b98975050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116141590565b60006116347fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b613251565b905090565b604080517f49535355455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b60006116347febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e613251565b60036020526000908152604090205481565b60008060006116b9846115e7565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611756576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061175f610eac565b925061176a83613259565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611807576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff84161515611872576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801561186c573d6000803e3d6000fd5b50611962565b508261189a73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61329316565b91506118c373ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff6133c216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515611960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b604080517f4255524e5f524f4c45000000000000000000000000000000000000000000000081529051908190036009019020611a098383612c49565b611a14338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008054604080517fd3ce77fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018890529151919092169263d3ce77fe92604480820193602093909283900390910190829087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505050506040513d6020811015611b5b57600080fd5b505050505050565b600080611b6e610892565b1515611b7d5760009150611ceb565b611b856120bc565b905073ffffffffffffffffffffffffffffffffffffffff81161515611bad5760009150611ceb565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611bd58861345a565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b83811015611c6d578181015183820152602001611c55565b50505050905090810190601f168015611c9a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611cbc57600080fd5b505af1158015611cd0573d6000803e3d6000fd5b505050506040513d6020811015611ce657600080fd5b505191505b509392505050565b600080611cfe6120bc565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610e7a57600080fd5b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b01902081565b604080517f4255524e5f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902081565b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b019020611e5b8383612c49565b611e66338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061126a8484612c6b565b6000611f18610892565b8015611fc2575060008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152915191909216916370a0823191602480830192602092919082900301818787803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b505050506040513d6020811015611fbe57600080fd5b5051115b9392505050565b604080517f49535355455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902061200482613464565b61200f338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156120ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506120b73084612f20565b505050565b60006116347f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b613251565b6060806120f43384611f0e565b60408051808201909152601281527f544d5f43414e5f4e4f545f464f525741524400000000000000000000000000006020820152901515612191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50604080516000815260016020808301828152606084018552929550919290919085019080388339505060008054835193945073ffffffffffffffffffffffffffffffffffffffff169284925081106121e657fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029091019091015261126a8383836134a5565b60019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61224961166e565b14905090565b61225761166e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156122f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506122fc613b7b565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1663f77c47916040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561237757600080fd5b505af115801561238b573d6000803e3d6000fd5b505050506040513d60208110156123a157600080fd5b505160408051808201909152601381527f544d5f544f4b454e5f434f4e54524f4c4c45520000000000000000000000000060208201529173ffffffffffffffffffffffffffffffffffffffff90911614612457576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905580156124a457806124c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6001819055508115156000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bef97c876040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561255457600080fd5b505af1158015612568573d6000803e3d6000fd5b505050506040513d602081101561257e57600080fd5b50511515146120b75760008054604080517ff41e60c50000000000000000000000000000000000000000000000000000000081528515156004820152905173ffffffffffffffffffffffffffffffffffffffff9092169263f41e60c59260248084019382900301818387803b1580156125f657600080fd5b505af115801561260a573d6000803e3d6000fd5b50505050505050565b604080517f4d494e545f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902081565b60015481565b604080517f5245564f4b455f56455354494e47535f524f4c450000000000000000000000008152905190819003601401902081565b6000805460408051808201909152601d81527f544d5f50524f58595f5041594d454e545f57524f4e475f53454e44455200000060208201529073ffffffffffffffffffffffffffffffffffffffff16331461273a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600092915050565b604080517f5245564f4b455f56455354494e47535f524f4c4500000000000000000000000081529051908190036014019020600090819061278385613c5a565b61278e338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561282b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff8616600090815260036020908152604091829020548251808401909352600d83527f544d5f4e4f5f56455354494e4700000000000000000000000000000000000000918301919091528791879182106128f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff881660009081526002602090815260408083208a845282529182902060018101548351808501909452601884527f544d5f56455354494e475f4e4f545f5245564f4b41424c4500000000000000009284019290925297507801000000000000000000000000000000000000000000000000900460ff1615156129ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508554612a39906129f9613c7b565b600189015467ffffffffffffffff918216918181169168010000000000000000810482169170010000000000000000000000000000000090910416613079565b73ffffffffffffffffffffffffffffffffffffffff808a1660008181526002602090815260408083208d8452825280832083815560010180547fffffffffffffff00000000000000000000000000000000000000000000000000169055825481517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810195909552306024860152604485018790529051959a50909316936323b872dd936064808501949193918390030190829087803b158015612b0057600080fd5b505af1158015612b14573d6000803e3d6000fd5b505050506040513d6020811015612b2a57600080fd5b50516040805180820190915260208082527f544d5f5245564f4b455f5452414e534645525f46524f4d5f524556455254454490820152901515612bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506040805188815260208101879052815173ffffffffffffffffffffffffffffffffffffffff8b16927fafc516b1509f836efdc27d64d966d14f82ef53f456f0de74c12ac8a651a084cc928290030190a25050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600190565b4390565b6060611fc28373ffffffffffffffffffffffffffffffffffffffff1683613c8d565b612c758282612e61565b60408051808201909152601d81527f544d5f41535349474e5f42414c5f494e435f4e4f545f414c4c4f5745440000006020820152901515612d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008054604080517f23b872dd00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff868116602483015260448201869052915191909216926323b872dd92606480820193602093909283900390910190829087803b158015612d9857600080fd5b505af1158015612dac573d6000803e3d6000fd5b505050506040513d6020811015612dc257600080fd5b50516040805180820190915260208082527f544d5f41535349474e5f5452414e534645525f46524f4d5f5245564552544544908201529015156120b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b60015460008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301529151939493612f1793879316916370a0823191602480830192602092919082900301818a87803b158015612edf57600080fd5b505af1158015612ef3573d6000803e3d6000fd5b505050506040513d6020811015612f0957600080fd5b50519063ffffffff6130f516565b11159392505050565b60008054604080517f827f32c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690529151919092169263827f32c092604480820193602093909283900390910190829087803b158015612f9f57600080fd5b505af1158015612fb3573d6000803e3d6000fd5b505050506040513d602081101561126a57600080fd5b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115613072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5090919050565b60008082861061308c57600091506130eb565b8386101561309c578691506130eb565b6130ac838663ffffffff6131a616565b6130cc6130bf888863ffffffff6131a616565b899063ffffffff613ce816565b8115156130d557fe5b0490506130e8878263ffffffff6131a616565b91505b5095945050505050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f570000000000000000000000000000006020820152600090838301908482101561319a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508091505b5092915050565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f5700000000000000000000000000006020820152600090819084841115613249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505050900390565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515613282576000915061328d565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806133208684613daa565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f524556455254454400000000602082015291935091508215156130eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906134518582613ddb565b95945050505050565b8051602002815290565b604080516001808252818301909252606091602080830190803883390190505090508181600081518110151561349657fe5b60209081029091010152919050565b60606000806060806134b5610892565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515613552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008061355e6120bc565b9150613568611609565b90506135738a610da0565b60408051808201909152601b81527f45564d52554e5f4558454355544f525f554e415641494c41424c450000000000602082015290965073ffffffffffffffffffffffffffffffffffffffff87161515613629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506040516060602482019081528b5160848301528b517f279cea3500000000000000000000000000000000000000000000000000000000975087928d928d928d9282916044820191606481019160a490910190602089019080838360005b8381101561369f578181015183820152602001613687565b50505050905090810190601f1680156136cc5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156136ff5781810151838201526020016136e7565b50505050905090810190601f16801561372c5780820380516001836020036101000a031916815260200191505b508481038252855181528551602091820191808801910280838360005b83811015613761578181015183820152602001613749565b505050509050019650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509350600080855160208701895af4604051935080801561386657603f3d1180156138045760203d03806020883e8601604052613860565b7f08c379a000000000000000000000000000000000000000000000000000000000865260206004870152601e60248701527f45564d52554e5f4558454355544f525f494e56414c49445f52455455524e00006044870152606486fd5b5061386f565b3d6000863e3d85fd5b50508573ffffffffffffffffffffffffffffffffffffffff167f5229a5dba83a54ae8cb5b51bdd6de9474cacbe9dd332f5185f3a4f4f2e3f4ad98b8b8660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156138f15781810151838201526020016138d9565b50505050905090810190601f16801561391e5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015613951578181015183820152602001613939565b50505050905090810190601f16801561397e5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156139b1578181015183820152602001613999565b50505050905090810190601f1680156139de5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a28296508173ffffffffffffffffffffffffffffffffffffffff16613a116120bc565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515613ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5080613ad1611609565b60408051808201909152601f81527f45564d52554e5f50524f5445435445445f53544154455f4d4f4449464945440060208201529114613b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505050505050509392505050565b613b8361166e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015613c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50613c58613c2b612c45565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff613e2916565b565b60606108cc8273ffffffffffffffffffffffffffffffffffffffff16613464565b6000611634613c88613e2d565b612fc9565b604080516002808252606080830184529260208301908038833901905050905082816000815181101515613cbd57fe5b602090810290910101528051829082906001908110613cd857fe5b6020908102909101015292915050565b600080831515613cfb576000915061319f565b50828202828482811515613d0b57fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f570000000000000000000000000000006020820152929190041461319a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b6000806000806040516020818751602089018a5afa92506000831115613dcf57805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115613e1f573d8015613e0c5760208114613e1557613e1d565b60019350613e1d565b600183511493505b505b5090949350505050565b9055565b42905600a165627a7a723058203d5d22b0922a6138a58695e5993d017b6970cf4e9ca2ee736a2026fae374426e0029",
  "sourceMap": "518:15074:11:-;;;344:9:24;:7;;;;:9;:::i;:::-;518:15074:11;;590:84:34;615:24:32;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:34;-1:-1:-1;;637:13:34;;;;:30;:::i;:::-;590:84::o;881:137:32:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:32;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;-1:-1:-1;1824:61:32;-1:-1:-1;;;;;;;;;;;1872:12:32;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:39:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;518:15074:11:-;;;;;;;",
  "deployedSourceMap": "518:15074:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2584:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2584:41:11;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:32;;;;1009:53:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1009:53:11;;;;;;;;;;;;;;;;;;;;12090:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12090:132:11;;;;;;;6605:811;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6605:811:11;;;;;;;;;;;;;;;;;;;;;;;;;;;795:179:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:42;;-1:-1:-1;795:179:42;;-1:-1:-1;;;;;;;795:179:42;;;;;;;;;;;;;;;;;;;;2253:229:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:23;;;;9512:602:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9512:602:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4463:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4463:248:11;;;;;;;;;;;10510:534;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10510:534:11;;;;;;;;;;;;;;12228:681;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12228:681:11;;;;;;;;;13064:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13064:120:11;;;;;;;796:106:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:22;;;;724:60:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;724:60:11;;;;881:137:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:32;;;;2527:51:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2527:51:11;;;;;;;836:623:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:40;;;;;;;5623:230:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5623:230:11;;;;;;;;;1641:496:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:23;;-1:-1:-1;1641:496:23;;-1:-1:-1;;;;;;;1641:496:23;980:231:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:42;;;;790:62:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;790:62:11;;;;944:58;;8:9:-1;5:2;;;30:1;27;20:12;5:2;944:58:11;;;;5256:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5256:149:11;;;;;;;;;9363:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9363:143:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9363:143:11;;-1:-1:-1;9363:143:11;;-1:-1:-1;;;;;;;9363:143:11;4879:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4879:119:11;;;;;674:116:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:22;;;;8767:506:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8767:506:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8767:506:11;;-1:-1:-1;8767:506:11;;-1:-1:-1;;;;;;;8767:506:11;11811:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11811:93:11;;;;;;;;;;;;;;287:117:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:34;;;;3752:493:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3752:493:11;;;;;;;;;;;;;660:58;;8:9:-1;5:2;;;30:1;27;20:12;5:2;660:58:11;;;;2298:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2298:31:11;;;;858:80;;8:9:-1;5:2;;;30:1;27;20:12;5:2;858:80:11;;;;11201:422;;;;;;;;7646:920;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7646:920:11;;;;;;;;;2268:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2268:24:11;;;;9279:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9279:78:11;;;;2584:41;;;;;;;;;;;;;;;:::o;1128:208:32:-;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:32;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;1009:53:11:-;1060:2;1009:53;:::o;12090:132::-;12156:7;12182:33;12202:7;12211:3;12182:19;:33::i;:::-;12175:40;12090:132;-1:-1:-1;;12090:132:11:o;6605:811::-;828:24;;;;;;;;;;;;;;;;6866:7;;;;6824:23;6828:9;6839:7;6824:3;:23::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1140:66:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6897:26:11;;;;;;;:15;:26;;;;;;;;;;6952:23;;;;;;;;;;;;;;;;;;;1060:2;-1:-1:-1;6889:87:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6889:87:11;;7005:6;6995:16;;:6;:16;;;;:37;;;;;7025:7;7015:17;;:6;:17;;;;6995:37;7034:22;;;;;;;;;;;;;;;;;;6987:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6987:70:11;;7088:15;:26;7104:9;7088:26;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;7068:48;;7159:128;;;;;;;;;7185:7;7159:128;;;;7206:6;7159:128;;;;;;7226:6;7159:128;;;;;;7246:7;7159:128;;;;;;7267:10;7159:128;;;;;7126:8;:19;7135:9;7126:19;;;;;;;;;;;;;;;:30;7146:9;7126:30;;;;;;;;;;;:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7298:27;7306:9;7317:7;7298;:27::i;:::-;7341:41;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7400:9:11;;6605:811;-1:-1:-1;;;;;;;;6605:811:11:o;795:179:42:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;917:49:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:42;;795:179;-1:-1:-1;;795:179:42:o;2253:229:23:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:23;;-1:-1:-1;2253:229:23;:::o;9512:602:11:-;9698:14;9726:12;9752;9778:14;9806;9845:33;9644:10;9656;3108:15;:24;3124:7;3108:24;;;;;;;;;;;;;;;;3095:10;:37;3134:16;;;;;;;;;;;;;;;;;;3087:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3087:64:11;-1:-1:-1;;;;9881:20:11;;;;;;;;;:8;:20;;;;;;;;:32;;;;;;;;;;9932:19;;9969:18;;;;;9932:19;;9969:18;;;;;-1:-1:-1;10005:18:11;;;;;;-1:-1:-1;10043:20:11;;;;;-1:-1:-1;10085:22:11;;;;;;;-1:-1:-1;9932:19:11;-1:-1:-1;9512:602:11:o;4463:248::-;696:22;;;;;;;;;;;;;;;;4539:23;4543:9;4554:7;4539:3;:23::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:23;;4582:45:11;4608:9;4619:7;4582:25;:45::i;:::-;4629:39;;;;;;;;;;;;;;;;;;4574:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4574:95:11;;4679:25;4685:9;4696:7;4679:5;:25::i;:::-;4463:248;;;;:::o;10510:534::-;10602:4;10698:25;10824:17;737:16:32;:14;:16::i;:::-;755:21;;;;;;;;;;;;;;;;;;729:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;729:48:32;-1:-1:-1;10648:5:11;;10656:30;;;;;;;;;;;;;;;;;;10648:5;;10626:10;:28;10618:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10618:69:11;-1:-1:-1;10726:22:11;;;10743:4;10726:22;;:46;;-1:-1:-1;10752:20:11;;;10767:4;10752:20;10726:46;10698:74;;10788:20;10787:21;10783:233;;;10844:39;10870:3;10875:7;10844:25;:39::i;:::-;10824:59;;10902:12;10901:13;:58;;;;10952:7;10918:31;10938:5;10945:3;10918:19;:31::i;:::-;:41;10901:58;10897:109;;;10986:5;10979:12;;;;10897:109;11033:4;11026:11;;787:1:32;10510:534:11;;;;;;;:::o;12228:681::-;12353:24;;;12310:7;12353:24;;;:15;:24;;;;;;12310:7;;;;12430:405;12454:13;12450:1;:17;12430:405;;;12513:17;;;;;;;:8;:17;;;;;;;;:20;;;;;;;;12613:8;;12513:20;;-1:-1:-1;12570:176:11;;12639:16;:5;:14;:16::i;:::-;12673:7;;;;12570:176;;;;;12673:7;;;;12698;;;;;;12723:9;;;;;12570:25;:176::i;:::-;12547:199;-1:-1:-1;12783:41:11;:20;12547:199;12783:41;:24;:41;:::i;:::-;12760:64;-1:-1:-1;12469:3:11;;;;;12430:405;;;12852:5;;;:24;;;;;;:5;:24;;;;;;;;;:50;;12881:20;;12852:5;;;;;:15;;:24;;;;;;;;;;;;;;;;;;:5;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;12852:24:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12852:24:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12852:24:11;;:50;:28;:50;:::i;:::-;12845:57;12228:681;-1:-1:-1;;;;;;;;12228:681:11:o;13064:120::-;13130:4;13171:5;;;;;13153:24;;;;;13064:120::o;796:106:22:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;724:60:11:-;761:23;;;;;;;;;;;;;;;;724:60;:::o;881:137:32:-;936:7;962:49;345:66;962:47;:49::i;2527:51:11:-;;;;;;;;;;;;;:::o;836:623:40:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:40;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:40;-1:-1:-1;1096:13:40;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:40;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:40;1092:307;;;-1:-1:-1;1244:6:40;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:40;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:40;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;5623:230:11:-;980:22;;;;;;;;;;;;;;;;5697:21;5701:7;5710;5697:3;:21::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:23;-1:-1:-1;5809:5:11;;;:37;;;;;;:5;:37;;;;;;;;;;;;;;;:5;;;;;:19;;:37;;;;;;;;;;;;;;;;;;:5;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;5809:37:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5809:37:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5623:230:11:o;1641:496:23:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:23;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1955:175:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:23;;-1:-1:-1;1641:496:23;;;;;;;:::o;980:231:42:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:53;1086:69:42;;;;330:66:44;1086:69:42;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;790:62:11;828:24;;;;;;;;;;;;;;;;790:62;:::o;944:58::-;980:22;;;;;;;;;;;;;;;;944:58;:::o;5256:149::-;828:24;;;;;;;;;;;;;;;;5336:23;5340:9;5351:7;5336:3;:23::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:23;;5371:27:11;5379:9;5390:7;5371;:27::i;9363:143::-;9428:4;9451:16;:14;:16::i;:::-;:48;;;;-1:-1:-1;9498:1:11;9471:5;;:24;;;;;;:5;:24;;;;;;;;;:5;;;;;:15;;:24;;;;;;;;;;;;;;9498:1;9471:5;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;9471:24:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9471:24:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9471:24:11;:28;9451:48;9444:55;9363:143;-1:-1:-1;;;9363:143:11:o;4879:119::-;761:23;;;;;;;;;;;;;;;;4938:12;4942:7;4938:3;:12::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:23;;4962:29:11;4976:4;4983:7;4962:5;:29::i;:::-;4879:119;;;:::o;674:116:22:-;713:7;747:35;485:66;747:33;:35::i;8767:506:11:-;8895:18;9132:26;8827:34;8838:10;8850;8827;:34::i;:::-;8863:21;;;;;;;;;;;;;;;;;;8819:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;8819:66:11;-1:-1:-1;8916:12:11;;;8926:1;8916:12;;9175:1;8916:12;;;;9161:16;;;;;;;;8916:12;;-1:-1:-1;8916:12:11;;9175:1;;9161:16;;;;8916:12;105:10:-1;9161:16:11;88:34:-1;-1:-1;;9210:5:11;;;9187:12;;;;-1:-1:-1;9210:5:11;;;9187:12;;-1:-1:-1;9187:12:11;;;;;;:29;;;;:12;;;;;;;;;;:29;9227:39;9237:10;9249:5;9256:9;9227;:39::i;11811:93::-;11893:4;11811:93;;;;;:::o;287:117:34:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;3752:493:11:-;615:24:32;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;;3917:13:11;:11;:13::i;:::-;3980:4;3949:36;;:6;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3949:19:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3949:19:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3949:19:11;3987:22;;;;;;;;;;;;;3949:19;3987:22;;;;3949:36;;;;;3941:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3941:69:11;-1:-1:-1;4021:5:11;:14;;;;;;;;;;4064:22;;:56;;4103:17;4064:56;;;4097:2;4064:56;4045:16;:75;;;;4163:13;4135:41;;:5;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4135:24:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4135:24:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4135:24:11;:41;;;4131:108;;4192:5;;;:36;;;;;;;;;;;;;;;:5;;;;;:21;;:36;;;;;;;;;;:5;;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;4192:36:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4192:36:11;;;;3752:493;;;:::o;660:58::-;696:22;;;;;;;;;;;;;;;;660:58;:::o;2298:31::-;;;;:::o;858:80::-;905:33;;;;;;;;;;;;;;;;858:80;:::o;11201:422::-;11256:4;11553:5;;11561:32;;;;;;;;;;;;;;;;;;11553:5;;11531:10;:28;11523:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11523:71:11;-1:-1:-1;11611:5:11;;11201:422;-1:-1:-1;;11201:422:11:o;7646:920::-;905:33;;;;;;;;;;;;;;;;7830:22;;;;7759:12;7763:7;7759:3;:12::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:23;-1:-1:-1;3108:24:11;;;;;;;:15;:24;;;;;;;;;;3134:16;;;;;;;;;;;;;;;;;;;7795:7;;7804:10;;3095:37;;3087:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3087:64:11;-1:-1:-1;7855:17:11;;;;;;;:8;:17;;;;;;;;:29;;;;;;;;;7902:11;;;;7915:27;;;;;;;;7902:11;7915:27;;;;;;;;;;7855:29;-1:-1:-1;7902:11:11;;;;;7894:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;7894:49:11;-1:-1:-1;8013:8:11;;7974:152;;8035:16;:14;:16::i;:::-;8065:7;;;;7974:152;;;;;8065:7;;;;8086;;;;;;8107:9;;;;;7974:25;:152::i;:::-;8232:17;;;;;;;;:8;:17;;;;;;;;:29;;;;;;;;8225:36;;;;;;;;;;;8407:5;;:53;;;;;;;;;;;;8443:4;8407:53;;;;;;;;;;;;7954:172;;-1:-1:-1;8407:5:11;;;;:18;;:53;;;;;8232:17;;8407:53;;;;;;;;:5;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;8407:53:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8407:53:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8407:53:11;8462:35;;;;;;;;;8407:53;8462:35;;;;;;;;;8399:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;8399:99:11;-1:-1:-1;8514:45:11;;;;;;;;;;;;;;;;;;;;;;;;;;1216:1:23;;7646:920:11;;;;;;:::o;2268:24::-;;;;;;:::o;9279:78::-;9346:4;9279:78;:::o;347:94:37:-;422:12;347:94;:::o;968:126:14:-;1028:11;1058:29;1070:2;1062:11;;1083:2;1058:3;:29::i;15047:373:11:-;15127:45;15153:9;15164:7;15127:25;:45::i;:::-;15174:41;;;;;;;;;;;;;;;;;;15119:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15119:97:11;-1:-1:-1;15331:5:11;;;:44;;;;;;15350:4;15331:44;;;;:5;:44;;;;;;;;;;;;;;;:5;;;;;:18;;:44;;;;;;;;;;;;;;;;;;:5;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;15331:44:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15331:44:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15331:44:11;15377:35;;;;;;;;;15331:44;15377:35;;;;;;;;;15323:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11910:174:11;12061:16;;11998:4;12021:5;;:26;;;;;;:5;:26;;;;;;;;;11998:4;;12061:16;12021:36;;12052:4;;12021:5;;:15;;:26;;;;;;;;;;;;;;11998:4;12021:5;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;12021:26:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12021:26:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12021:26:11;;:36;:30;:36;:::i;:::-;:56;;;11910:174;-1:-1:-1;;;11910:174:11:o;15426:164::-;15496:5;;;:40;;;;;;:5;:40;;;;;;;;;;;;;;;:5;;;;;:20;;:40;;;;;;;;;;;;;;;;;;:5;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;15496:40:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15496:40:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;188:149:38;283:20;;;;;;;;;;;;;;;;;240:6;;271:10;266:15;;;258:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;258:46:38;-1:-1:-1;328:1:38;;188:149;-1:-1:-1;188:149:38:o;14052:989:11:-;14255:7;;14344:14;;;14340:53;;14381:1;14374:8;;;;14340:53;14413:5;14406:4;:12;14402:56;;;14441:6;14434:13;;;;14402:56;14942:17;:6;14953:5;14942:17;:10;:17;:::i;:::-;14912:27;14923:15;:4;14932:5;14923:15;:8;:15;:::i;:::-;14912:6;;:27;:10;:27;:::i;:::-;:47;;;;;;;;;-1:-1:-1;15010:24:11;:6;14912:47;15010:24;:10;:24;:::i;:::-;15003:31;;14052:989;;;;;;;;;:::o;1928:170:59:-;2053:18;;;;;;;;;;;;;;;;;1988:7;;2019;;;;2044;;;;2036:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2036:36:59;;2090:1;2083:8;;1928:170;;;;;;:::o;1685:172::-;1782:19;;;;;;;;;;;;;;;;;1745:7;;;;1772:8;;;;1764:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1764:38:59;-1:-1:-1;;;1824:7:59;;;1685:172::o;379:134:39:-;490:15;;480:27::o;519:134::-;630:15;;620:27::o;426:244:33:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:36:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:36;;;;;;;;25:18:-1;;61:17;;4708:91:36;182:15:-1;4744:25:36;179:29:-1;160:49;;4656:7:36;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:36;-1:-1:-1;4898:46:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3100:304:36;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:36;;;;;;;;25:18:-1;;61:17;;3232:101:36;182:15:-1;3268:17:36;179:29:-1;160:49;;3184:4:36;;3350:47;3372:6;3232:101;3350:21;:47::i;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:36:o;142:539:25:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;1594:117:14:-;1669:16;;;1683:1;1669:16;;;;;;;;;1642:11;;1669:16;;;;;;105:10:-1;1669:16:14;88:34:-1;136:17;;-1:-1;1669:16:14;1665:20;;1702:2;1695:1;1697;1695:4;;;;;;;;;;;;;;;;;;:9;1594:117;;-1:-1:-1;1594:117:14:o;1217:3212:42:-;1364:5;1385:27;1533:10;1584:17;1671:19;737:16:32;:14;:16::i;:::-;755:21;;;;;;;;;;;;;;;;;;729:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;729:48:32;;4467:17:42;4514:16;4495:8;:6;:8::i;:::-;4467:37;;4533:7;:5;:7::i;:::-;4514:26;;1415:29;1436:7;1415:20;:29::i;:::-;1495:26;;;;;;;;;;;;;;;;;1385:59;;-1:-1:-1;1462:31:42;;;;;1454:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1454:68:42;-1:-1:-1;1604:56:42;;;;;;;;;;;;;;;;;1546:28;;-1:-1:-1;1546:28:42;;1632:7;;1641:6;;1649:10;;1604:56;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1604:56:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1604:56:42;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1604:56:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1604:56:42;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1604:56:42;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1604:56:42;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1604:56:42;1584:76;;2067:1;1979;1930:4;1924:11;1880:4;1874;1870:15;1823:8;1768:3;1738:384;2152:4;2146:11;;-1:-1:-1;2198:7:42;2218:195;;;;2478:4;2462:14;2459:24;2500:970;;;;4144:4;4128:14;4124:25;4199:8;4193:4;4185:6;4170:38;4243:21;;4237:4;4230:35;2452:1851;;2500:970;2853:66;2845:6;2838:82;2995:66;2988:4;2980:6;2976:17;2969:93;3128:66;3121:4;3113:6;3109:17;3102:93;3259:66;3252:4;3244:6;3240:17;3233:93;3373:3;3365:6;3358:19;2452:1851;;2191:2126;;2218:195;2337:14;2334:1;2326:6;2311:41;2384:14;2376:6;2369:30;2191:2126;;1709:2618;4363:8;4342:56;;;4374:7;4383:6;4391;4342:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4342:56:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:56:42;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4342:56:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:56:42;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4342:56:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4416:6;4409:13;;4598:9;4577:30;;4585:8;:6;:8::i;:::-;4577:30;;;4609;;;;;;;;;;;;;;;;;;4569:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4569:71:42;-1:-1:-1;4669:8:42;4658:7;:5;:7::i;:::-;4679:30;;;;;;;;;;;;;;;;;;4658:19;4650:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4650:60:42;;787:1:32;;1217:3212:42;;;;;;;;;:::o;1447:123:32:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;:::-;1447:123::o;435:101:14:-;483:11;513:16;525:2;517:11;;513:3;:16::i;1261:106:37:-;1310:6;1335:25;:14;:12;:14::i;:::-;:23;:25::i;1717:148:14:-;1804:16;;;1818:1;1804:16;;;1777:11;1804:16;;;;;1777:11;1804:16;;;;;105:10:-1;1804:16:14;88:34:-1;136:17;;-1:-1;1804:16:14;1800:20;;1837:2;1830:1;1832;1830:4;;;;;;;;;;;;;;;;;;:9;1849:4;;1856:2;;1849:1;;1851;;1849:4;;;;;;;;;;;;;;:9;1717:148;;-1:-1:-1;;1717:148:14:o;685:448:59:-;745:7;;985;;981:46;;;1015:1;1008:8;;;;981:46;-1:-1:-1;1049:7:59;;;1054:2;1049;:7;1074:6;;;;;;;1088:18;;;;;;;;;;;;;;;;;;1074:6;;;:12;1066:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2148:774:36;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:36;;2911:3;;-1:-1:-1;2148:774:36;-1:-1:-1;;;2148:774:36:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:36;;800:1342;-1:-1:-1;;;;800:1342:36:o;1028:119:39:-;1117:22;;1115:26::o;926:144:37:-;999:15;926:144;:::o",
  "source": "/*\n * SPDX-License-Identitifer:    GPL-3.0-or-later\n */\n\n/* solium-disable function-order */\n\npragma solidity 0.4.24;\n\nimport \"@aragon/os/contracts/apps/AragonApp.sol\";\nimport \"@aragon/os/contracts/common/IForwarder.sol\";\nimport \"@aragon/os/contracts/common/Uint256Helpers.sol\";\n\nimport \"@aragon/os/contracts/lib/token/ERC20.sol\";\nimport \"@aragon/os/contracts/lib/math/SafeMath.sol\";\n\nimport \"@aragon/apps-shared-minime/contracts/ITokenController.sol\";\nimport \"@aragon/apps-shared-minime/contracts/MiniMeToken.sol\";\n\n\ncontract TokenManager is ITokenController, IForwarder, AragonApp {\n    using SafeMath for uint256;\n    using Uint256Helpers for uint256;\n\n    bytes32 public constant MINT_ROLE = keccak256(\"MINT_ROLE\");\n    bytes32 public constant ISSUE_ROLE = keccak256(\"ISSUE_ROLE\");\n    bytes32 public constant ASSIGN_ROLE = keccak256(\"ASSIGN_ROLE\");\n    bytes32 public constant REVOKE_VESTINGS_ROLE = keccak256(\"REVOKE_VESTINGS_ROLE\");\n    bytes32 public constant BURN_ROLE = keccak256(\"BURN_ROLE\");\n\n    uint256 public constant MAX_VESTINGS_PER_ADDRESS = 50;\n\n    string private constant ERROR_NO_VESTING = \"TM_NO_VESTING\";\n    string private constant ERROR_TOKEN_CONTROLLER = \"TM_TOKEN_CONTROLLER\";\n    string private constant ERROR_MINT_BALANCE_INCREASE_NOT_ALLOWED = \"TM_MINT_BAL_INC_NOT_ALLOWED\";\n    string private constant ERROR_ASSIGN_BALANCE_INCREASE_NOT_ALLOWED = \"TM_ASSIGN_BAL_INC_NOT_ALLOWED\";\n    string private constant ERROR_TOO_MANY_VESTINGS = \"TM_TOO_MANY_VESTINGS\";\n    string private constant ERROR_WRONG_CLIFF_DATE = \"TM_WRONG_CLIFF_DATE\";\n    string private constant ERROR_VESTING_NOT_REVOKABLE = \"TM_VESTING_NOT_REVOKABLE\";\n    string private constant ERROR_REVOKE_TRANSFER_FROM_REVERTED = \"TM_REVOKE_TRANSFER_FROM_REVERTED\";\n    string private constant ERROR_ASSIGN_TRANSFER_FROM_REVERTED = \"TM_ASSIGN_TRANSFER_FROM_REVERTED\";\n    string private constant ERROR_CAN_NOT_FORWARD = \"TM_CAN_NOT_FORWARD\";\n    string private constant ERROR_ON_TRANSFER_WRONG_SENDER = \"TM_TRANSFER_WRONG_SENDER\";\n    string private constant ERROR_PROXY_PAYMENT_WRONG_SENDER = \"TM_PROXY_PAYMENT_WRONG_SENDER\";\n\n    struct TokenVesting {\n        uint256 amount;\n        uint64 start;\n        uint64 cliff;\n        uint64 vesting;\n        bool revokable;\n    }\n\n    MiniMeToken public token;\n    uint256 public maxAccountTokens;\n\n    // We are mimicing an array in the inner mapping, we use a mapping instead to make app upgrade more graceful\n    mapping (address => mapping (uint256 => TokenVesting)) internal vestings;\n    mapping (address => uint256) public vestingsLengths;\n    mapping (address => bool) public everHeld;\n\n    // Other token specific events can be watched on the token address directly (avoids duplication)\n    event NewVesting(address indexed receiver, uint256 vestingId, uint256 amount);\n    event RevokeVesting(address indexed receiver, uint256 vestingId, uint256 nonVestedAmount);\n\n    modifier vestingExists(address _holder, uint256 _vestingId) {\n        // TODO: it's not checking for gaps that may appear because of deletes in revokeVesting function\n        require(_vestingId < vestingsLengths[_holder], ERROR_NO_VESTING);\n        _;\n    }\n\n    /**\n    * @notice Initialize Token Manager for `_token.symbol(): string`, whose tokens are `transferable ? 'not' : ''` transferable`_maxAccountTokens > 0 ? ' and limited to a maximum of ' + @tokenAmount(_token, _maxAccountTokens, false) + ' per account' : ''`\n    * @param _token MiniMeToken address for the managed token (Token Manager instance must be already set as the token controller)\n    * @param _transferable whether the token can be transferred by holders\n    * @param _maxAccountTokens Maximum amount of tokens an account can have (0 for infinite tokens)\n    */\n    function initialize(\n        MiniMeToken _token,\n        bool _transferable,\n        uint256 _maxAccountTokens\n    )\n        external\n        onlyInit\n    {\n        initialized();\n\n        require(_token.controller() == address(this), ERROR_TOKEN_CONTROLLER);\n\n        token = _token;\n        maxAccountTokens = _maxAccountTokens == 0 ? uint256(-1) : _maxAccountTokens;\n\n        if (token.transfersEnabled() != _transferable) {\n            token.enableTransfers(_transferable);\n        }\n    }\n\n    /**\n    * @notice Mint `@tokenAmount(self.token(): address, _amount, false)` tokens for `_receiver`\n    * @param _receiver The address receiving the tokens\n    * @param _amount Number of tokens minted\n    */\n    function mint(address _receiver, uint256 _amount) external authP(MINT_ROLE, arr(_receiver, _amount)) {\n        require(_isBalanceIncreaseAllowed(_receiver, _amount), ERROR_MINT_BALANCE_INCREASE_NOT_ALLOWED);\n        _mint(_receiver, _amount);\n    }\n\n    /**\n    * @notice Mint `@tokenAmount(self.token(): address, _amount, false)` tokens for the Token Manager\n    * @param _amount Number of tokens minted\n    */\n    function issue(uint256 _amount) external authP(ISSUE_ROLE, arr(_amount)) {\n        _mint(address(this), _amount);\n    }\n\n    /**\n    * @notice Assign `@tokenAmount(self.token(): address, _amount, false)` tokens to `_receiver` from the Token Manager's holdings\n    * @param _receiver The address receiving the tokens\n    * @param _amount Number of tokens transferred\n    */\n    function assign(address _receiver, uint256 _amount) external authP(ASSIGN_ROLE, arr(_receiver, _amount)) {\n        _assign(_receiver, _amount);\n    }\n\n    /**\n    * @notice Burn `@tokenAmount(self.token(): address, _amount, false)` tokens from `_holder`\n    * @param _holder Holder of tokens being burned\n    * @param _amount Number of tokens being burned\n    */\n    function burn(address _holder, uint256 _amount) external authP(BURN_ROLE, arr(_holder, _amount)) {\n        // minime.destroyTokens() never returns false, only reverts on failure\n        token.destroyTokens(_holder, _amount);\n    }\n\n    /**\n    * @notice Assign `@tokenAmount(self.token(): address, _amount, false)` tokens to `_receiver` from the Token Manager's holdings with a `_revokable : 'revokable' : ''` vesting starting at `@formatDate(_start)`, cliff at `@formatDate(_cliff)` (first portion of tokens transferable), and completed vesting at `@formatDate(_vested)` (all tokens transferable)\n    * @param _receiver The address receiving the tokens\n    * @param _amount Number of tokens vested\n    * @param _start Date the vesting calculations start\n    * @param _cliff Date when the initial portion of tokens are transferable\n    * @param _vested Date when all tokens are transferable\n    * @param _revokable Whether the vesting can be revoked by the Token Manager\n    */\n    function assignVested(\n        address _receiver,\n        uint256 _amount,\n        uint64 _start,\n        uint64 _cliff,\n        uint64 _vested,\n        bool _revokable\n    )\n        external\n        authP(ASSIGN_ROLE, arr(_receiver, _amount))\n        returns (uint256)\n    {\n        require(vestingsLengths[_receiver] < MAX_VESTINGS_PER_ADDRESS, ERROR_TOO_MANY_VESTINGS);\n\n        require(_start <= _cliff && _cliff <= _vested, ERROR_WRONG_CLIFF_DATE);\n\n        uint256 vestingId = vestingsLengths[_receiver]++;\n        vestings[_receiver][vestingId] = TokenVesting(\n            _amount,\n            _start,\n            _cliff,\n            _vested,\n            _revokable\n        );\n\n        _assign(_receiver, _amount);\n\n        emit NewVesting(_receiver, vestingId, _amount);\n\n        return vestingId;\n    }\n\n    /**\n    * @notice Revoke vesting #`_vestingId` from `_holder`, returning unvested tokens to the Token Manager\n    * @param _holder Address whose vesting to revoke\n    * @param _vestingId Numeric id of the vesting\n    */\n    function revokeVesting(address _holder, uint256 _vestingId)\n        external\n        authP(REVOKE_VESTINGS_ROLE, arr(_holder))\n        vestingExists(_holder, _vestingId)\n    {\n        TokenVesting storage v = vestings[_holder][_vestingId];\n        require(v.revokable, ERROR_VESTING_NOT_REVOKABLE);\n\n        uint256 nonVested = _calculateNonVestedTokens(\n            v.amount,\n            getTimestamp64(),\n            v.start,\n            v.cliff,\n            v.vesting\n        );\n\n        // To make vestingIds immutable over time, we just zero out the revoked vesting\n        delete vestings[_holder][_vestingId];\n\n        // transferFrom always works as controller\n        // onTransfer hook always allows if transfering to token controller\n        require(token.transferFrom(_holder, address(this), nonVested), ERROR_REVOKE_TRANSFER_FROM_REVERTED);\n\n        emit RevokeVesting(_holder, _vestingId, nonVested);\n    }\n\n    /**\n    * @notice Execute desired action as a token holder\n    * @dev IForwarder interface conformance. Forwards any token holder action.\n    * @param _evmScript Script being executed\n    */\n    function forward(bytes _evmScript) public {\n        require(canForward(msg.sender, _evmScript), ERROR_CAN_NOT_FORWARD);\n        bytes memory input = new bytes(0); // TODO: Consider input for this\n\n        // Add the managed token to the blacklist to disallow a token holder from executing actions\n        // on the token controller's (this contract) behalf\n        address[] memory blacklist = new address[](1);\n        blacklist[0] = address(token);\n\n        runScript(_evmScript, input, blacklist);\n    }\n\n    function isForwarder() public pure returns (bool) {\n        return true;\n    }\n\n    function canForward(address _sender, bytes) public view returns (bool) {\n        return hasInitialized() && token.balanceOf(_sender) > 0;\n    }\n\n    function getVesting(\n        address _recipient,\n        uint256 _vestingId\n    )\n        public\n        view\n        vestingExists(_recipient, _vestingId)\n        returns (\n            uint256 amount,\n            uint64 start,\n            uint64 cliff,\n            uint64 vesting,\n            bool revokable\n        )\n    {\n        TokenVesting storage tokenVesting = vestings[_recipient][_vestingId];\n        amount = tokenVesting.amount;\n        start = tokenVesting.start;\n        cliff = tokenVesting.cliff;\n        vesting = tokenVesting.vesting;\n        revokable = tokenVesting.revokable;\n    }\n\n    /*\n    * @dev Notifies the controller about a token transfer allowing the controller to decide whether to allow it or react if desired (only callable from the token)\n    * @param _from The origin of the transfer\n    * @param _to The destination of the transfer\n    * @param _amount The amount of the transfer\n    * @return False if the controller does not authorize the transfer\n    */\n    function onTransfer(address _from, address _to, uint _amount) public isInitialized returns (bool) {\n        require(msg.sender == address(token), ERROR_ON_TRANSFER_WRONG_SENDER);\n\n        bool includesTokenManager = _from == address(this) || _to == address(this);\n\n        if (!includesTokenManager) {\n            bool toCanReceive = _isBalanceIncreaseAllowed(_to, _amount);\n            if (!toCanReceive || transferableBalance(_from, now) < _amount) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    /**\n    * @notice Called when ether is sent to the MiniMe Token contract\n    * @return True if the ether is accepted, false for it to throw\n    */\n    function proxyPayment(address) public payable returns (bool) {\n        // Sender check is required to avoid anyone sending ETH to the Token Manager through this method\n        // Even though it is tested, solidity-coverage doesnt get it because\n        // MiniMeToken is not instrumented and entire tx is reverted\n        require(msg.sender == address(token), ERROR_PROXY_PAYMENT_WRONG_SENDER);\n        return false;\n    }\n\n    /**\n    * @dev Notifies the controller about an approval allowing the controller to react if desired\n    * @return False if the controller does not authorize the approval\n    */\n    function onApprove(address, address, uint) public returns (bool) {\n        return true;\n    }\n\n    function _isBalanceIncreaseAllowed(address _receiver, uint _inc) internal view returns (bool) {\n        return token.balanceOf(_receiver).add(_inc) <= maxAccountTokens;\n    }\n\n    function spendableBalanceOf(address _holder) public view returns (uint256) {\n        return transferableBalance(_holder, now);\n    }\n\n    function transferableBalance(address _holder, uint256 _time) public view returns (uint256) {\n        uint256 vestingsCount = vestingsLengths[_holder];\n        uint256 totalNonTransferable = 0;\n\n        for (uint256 i = 0; i < vestingsCount; i++) {\n            TokenVesting storage v = vestings[_holder][i];\n            uint nonTransferable = _calculateNonVestedTokens(\n                v.amount,\n                _time.toUint64(),\n                v.start,\n                v.cliff,\n                v.vesting\n            );\n            totalNonTransferable = totalNonTransferable.add(nonTransferable);\n        }\n\n        return token.balanceOf(_holder).sub(totalNonTransferable);\n    }\n\n    /**\n    * @dev Disable recovery escape hatch for own token,\n    *      as the it has the concept of issuing tokens without assigning them\n    */\n    function allowRecoverability(address _token) public view returns (bool) {\n        return _token != address(token);\n    }\n\n    /**\n    * @dev Calculate amount of non-vested tokens at a specifc time\n    * @param tokens The total amount of tokens vested\n    * @param time The time at which to check\n    * @param start The date vesting started\n    * @param cliff The cliff period\n    * @param vested The fully vested date\n    * @return The amount of non-vested tokens of a specific grant\n    *  transferableTokens\n    *   |                         _/--------   vestedTokens rect\n    *   |                       _/\n    *   |                     _/\n    *   |                   _/\n    *   |                 _/\n    *   |                /\n    *   |              .|\n    *   |            .  |\n    *   |          .    |\n    *   |        .      |\n    *   |      .        |\n    *   |    .          |\n    *   +===+===========+---------+----------> time\n    *      Start       Cliff    Vested\n    */\n    function _calculateNonVestedTokens(\n        uint256 tokens,\n        uint256 time,\n        uint256 start,\n        uint256 cliff,\n        uint256 vested\n    )\n        private\n        pure\n        returns (uint256)\n    {\n        // Shortcuts for before cliff and after vested cases.\n        if (time >= vested) {\n            return 0;\n        }\n        if (time < cliff) {\n            return tokens;\n        }\n\n        // Interpolate all vested tokens.\n        // As before cliff the shortcut returns 0, we can just calculate a value\n        // in the vesting rect (as shown in above's figure)\n\n        // vestedTokens = tokens * (time - start) / (vested - start)\n        // In assignVesting we enforce start <= cliff <= vested\n        // Here we shortcut time >= vested and time < cliff,\n        // so no division by 0 is possible\n        uint256 vestedTokens = tokens.mul(time.sub(start)) / vested.sub(start);\n\n        // tokens - vestedTokens\n        return tokens.sub(vestedTokens);\n    }\n\n    function _assign(address _receiver, uint256 _amount) internal {\n        require(_isBalanceIncreaseAllowed(_receiver, _amount), ERROR_ASSIGN_BALANCE_INCREASE_NOT_ALLOWED);\n        // Must use transferFrom() as transfer() does not give the token controller full control\n        require(token.transferFrom(this, _receiver, _amount), ERROR_ASSIGN_TRANSFER_FROM_REVERTED);\n    }\n\n    function _mint(address _receiver, uint256 _amount) internal {\n        token.generateTokens(_receiver, _amount); // minime.generateTokens() never returns false\n    }\n}\n",
  "sourcePath": "@aragon/apps-token-manager/contracts/TokenManager.sol",
  "ast": {
    "absolutePath": "@aragon/apps-token-manager/contracts/TokenManager.sol",
    "exportedSymbols": {
      "TokenManager": [
        7603
      ]
    },
    "id": 7604,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6726,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "94:23:11"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 6727,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 10490,
        "src": "119:49:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
        "file": "@aragon/os/contracts/common/IForwarder.sol",
        "id": 6728,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 10685,
        "src": "169:52:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "file": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "id": 6729,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 11232,
        "src": "222:56:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/token/ERC20.sol",
        "file": "@aragon/os/contracts/lib/token/ERC20.sol",
        "id": 6730,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 14295,
        "src": "280:50:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "id": 6731,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 14065,
        "src": "331:52:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/ITokenController.sol",
        "file": "@aragon/apps-shared-minime/contracts/ITokenController.sol",
        "id": 6732,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 5618,
        "src": "385:67:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 6733,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 6725,
        "src": "453:62:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6734,
              "name": "ITokenController",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5617,
              "src": "543:16:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITokenController_$5617",
                "typeString": "contract ITokenController"
              }
            },
            "id": 6735,
            "nodeType": "InheritanceSpecifier",
            "src": "543:16:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6736,
              "name": "IForwarder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10684,
              "src": "561:10:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IForwarder_$10684",
                "typeString": "contract IForwarder"
              }
            },
            "id": 6737,
            "nodeType": "InheritanceSpecifier",
            "src": "561:10:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6738,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10489,
              "src": "573:9:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$10489",
                "typeString": "contract AragonApp"
              }
            },
            "id": 6739,
            "nodeType": "InheritanceSpecifier",
            "src": "573:9:11"
          }
        ],
        "contractDependencies": [
          5617,
          9577,
          10365,
          10489,
          10502,
          10662,
          10684,
          10712,
          10810,
          10838,
          10871,
          10908,
          11200,
          11422,
          11823,
          11850,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7603,
        "linearizedBaseContracts": [
          7603,
          10489,
          9577,
          11823,
          13114,
          11850,
          10908,
          11422,
          10838,
          10662,
          10712,
          10502,
          10871,
          10810,
          11200,
          10365,
          10684,
          5617
        ],
        "name": "TokenManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6742,
            "libraryName": {
              "contractScope": null,
              "id": 6740,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14064,
              "src": "595:8:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$14064",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "589:27:11",
            "typeName": {
              "id": 6741,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "608:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 6745,
            "libraryName": {
              "contractScope": null,
              "id": 6743,
              "name": "Uint256Helpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11231,
              "src": "627:14:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Uint256Helpers_$11231",
                "typeString": "library Uint256Helpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "621:33:11",
            "typeName": {
              "id": 6744,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "646:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 6750,
            "name": "MINT_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "660:58:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6746,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "660:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d494e545f524f4c45",
                  "id": 6748,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "706:11:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686",
                    "typeString": "literal_string \"MINT_ROLE\""
                  },
                  "value": "MINT_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686",
                    "typeString": "literal_string \"MINT_ROLE\""
                  }
                ],
                "id": 6747,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "696:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6749,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "696:22:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6755,
            "name": "ISSUE_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "724:60:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6751,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "724:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "49535355455f524f4c45",
                  "id": 6753,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "771:12:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_2406f1e99f79cea012fb88c5c36566feaeefee0f4b98d3a376b49310222b53c4",
                    "typeString": "literal_string \"ISSUE_ROLE\""
                  },
                  "value": "ISSUE_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_2406f1e99f79cea012fb88c5c36566feaeefee0f4b98d3a376b49310222b53c4",
                    "typeString": "literal_string \"ISSUE_ROLE\""
                  }
                ],
                "id": 6752,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "761:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6754,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "761:23:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6760,
            "name": "ASSIGN_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "790:62:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6756,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "790:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "41535349474e5f524f4c45",
                  "id": 6758,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "838:13:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_f5a08927c847d7a29dc35e105208dbde5ce951392105d712761cc5d17440e2ff",
                    "typeString": "literal_string \"ASSIGN_ROLE\""
                  },
                  "value": "ASSIGN_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_f5a08927c847d7a29dc35e105208dbde5ce951392105d712761cc5d17440e2ff",
                    "typeString": "literal_string \"ASSIGN_ROLE\""
                  }
                ],
                "id": 6757,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "828:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6759,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "828:24:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6765,
            "name": "REVOKE_VESTINGS_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "858:80:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6761,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "858:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "5245564f4b455f56455354494e47535f524f4c45",
                  "id": 6763,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "915:22:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_95ffc68daedf1eb334cfcd22ee24a5eeb5a8e58aa40679f2ad247a84140f8d6e",
                    "typeString": "literal_string \"REVOKE_VESTINGS_ROLE\""
                  },
                  "value": "REVOKE_VESTINGS_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_95ffc68daedf1eb334cfcd22ee24a5eeb5a8e58aa40679f2ad247a84140f8d6e",
                    "typeString": "literal_string \"REVOKE_VESTINGS_ROLE\""
                  }
                ],
                "id": 6762,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "905:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6764,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "905:33:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6770,
            "name": "BURN_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "944:58:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6766,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "944:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4255524e5f524f4c45",
                  "id": 6768,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "990:11:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22",
                    "typeString": "literal_string \"BURN_ROLE\""
                  },
                  "value": "BURN_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22",
                    "typeString": "literal_string \"BURN_ROLE\""
                  }
                ],
                "id": 6767,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "980:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6769,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "980:22:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6773,
            "name": "MAX_VESTINGS_PER_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1009:53:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 6771,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1009:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3530",
              "id": 6772,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1060:2:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_50_by_1",
                "typeString": "int_const 50"
              },
              "value": "50"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6776,
            "name": "ERROR_NO_VESTING",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1069:58:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6774,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1069:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f4e4f5f56455354494e47",
              "id": 6775,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1112:15:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e58800e54011b78b0f26f397495d939339b84ffc714b84e5f9f82d7f925b4cd4",
                "typeString": "literal_string \"TM_NO_VESTING\""
              },
              "value": "TM_NO_VESTING"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6779,
            "name": "ERROR_TOKEN_CONTROLLER",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1133:70:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6777,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1133:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f544f4b454e5f434f4e54524f4c4c4552",
              "id": 6778,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1182:21:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_665d12afb25ae855835fa801a495db5c0dc17509fd09ae2f0e71ad1c99c0f7ef",
                "typeString": "literal_string \"TM_TOKEN_CONTROLLER\""
              },
              "value": "TM_TOKEN_CONTROLLER"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6782,
            "name": "ERROR_MINT_BALANCE_INCREASE_NOT_ALLOWED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1209:95:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6780,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1209:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f4d494e545f42414c5f494e435f4e4f545f414c4c4f574544",
              "id": 6781,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1275:29:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2b772fcef80de71598aed5681079e38847580b8f43b3cb49ce6848ff4a8d18b0",
                "typeString": "literal_string \"TM_MINT_BAL_INC_NOT_ALLOWED\""
              },
              "value": "TM_MINT_BAL_INC_NOT_ALLOWED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6785,
            "name": "ERROR_ASSIGN_BALANCE_INCREASE_NOT_ALLOWED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1310:99:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6783,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1310:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f41535349474e5f42414c5f494e435f4e4f545f414c4c4f574544",
              "id": 6784,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1378:31:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e39bacc8832f554ae60d5f440057f8cae429db320282edeb0f64d55040d0c73e",
                "typeString": "literal_string \"TM_ASSIGN_BAL_INC_NOT_ALLOWED\""
              },
              "value": "TM_ASSIGN_BAL_INC_NOT_ALLOWED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6788,
            "name": "ERROR_TOO_MANY_VESTINGS",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1415:72:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6786,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1415:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f544f4f5f4d414e595f56455354494e4753",
              "id": 6787,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1465:22:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d7e86ff8841a8dbc5e617dd3cf057b08b2d9a42c406172be99a5de4b7831cf47",
                "typeString": "literal_string \"TM_TOO_MANY_VESTINGS\""
              },
              "value": "TM_TOO_MANY_VESTINGS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6791,
            "name": "ERROR_WRONG_CLIFF_DATE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1493:70:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6789,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1493:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f57524f4e475f434c4946465f44415445",
              "id": 6790,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1542:21:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7153794b46b4c93f4f46a4245605d5f0b27f26ef1574b8394431bdaae283cbc0",
                "typeString": "literal_string \"TM_WRONG_CLIFF_DATE\""
              },
              "value": "TM_WRONG_CLIFF_DATE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6794,
            "name": "ERROR_VESTING_NOT_REVOKABLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1569:80:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6792,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1569:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f56455354494e475f4e4f545f5245564f4b41424c45",
              "id": 6793,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1623:26:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_95fd8da2a2e85dbbc02186b47870f457257c14a8e30040d7cdfddd0db2ec8f03",
                "typeString": "literal_string \"TM_VESTING_NOT_REVOKABLE\""
              },
              "value": "TM_VESTING_NOT_REVOKABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6797,
            "name": "ERROR_REVOKE_TRANSFER_FROM_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1655:96:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6795,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1655:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f5245564f4b455f5452414e534645525f46524f4d5f5245564552544544",
              "id": 6796,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1717:34:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_db7e7bea8a3e06053d9ce1a46fec9f3cae3468c59c1d825a9595d219c5fb4ba0",
                "typeString": "literal_string \"TM_REVOKE_TRANSFER_FROM_REVERTED\""
              },
              "value": "TM_REVOKE_TRANSFER_FROM_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6800,
            "name": "ERROR_ASSIGN_TRANSFER_FROM_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1757:96:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6798,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1757:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f41535349474e5f5452414e534645525f46524f4d5f5245564552544544",
              "id": 6799,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1819:34:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_942e082c893982fa16c1067985c53ce2706583b575c0148f5e47f0926af1b6b5",
                "typeString": "literal_string \"TM_ASSIGN_TRANSFER_FROM_REVERTED\""
              },
              "value": "TM_ASSIGN_TRANSFER_FROM_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6803,
            "name": "ERROR_CAN_NOT_FORWARD",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1859:68:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6801,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1859:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f43414e5f4e4f545f464f5257415244",
              "id": 6802,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1907:20:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_40dad3e8808c9552adc0ceb63220b80475917fd314fe84bbfed3430b25a7cdaf",
                "typeString": "literal_string \"TM_CAN_NOT_FORWARD\""
              },
              "value": "TM_CAN_NOT_FORWARD"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6806,
            "name": "ERROR_ON_TRANSFER_WRONG_SENDER",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1933:83:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6804,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1933:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f5452414e534645525f57524f4e475f53454e444552",
              "id": 6805,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1990:26:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_98099312d69732738735b3f5e61f3d09c0efb428ca1ff01f9f87228005190af6",
                "typeString": "literal_string \"TM_TRANSFER_WRONG_SENDER\""
              },
              "value": "TM_TRANSFER_WRONG_SENDER"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6809,
            "name": "ERROR_PROXY_PAYMENT_WRONG_SENDER",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2022:90:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6807,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "2022:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f50524f58595f5041594d454e545f57524f4e475f53454e444552",
              "id": 6808,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2081:31:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_76e948c6176a0396c703a3a245eba7e3c22508ebf35bbab992f2014240286b85",
                "typeString": "literal_string \"TM_PROXY_PAYMENT_WRONG_SENDER\""
              },
              "value": "TM_PROXY_PAYMENT_WRONG_SENDER"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "TokenManager.TokenVesting",
            "id": 6820,
            "members": [
              {
                "constant": false,
                "id": 6811,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2149:14:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 6810,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2149:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6813,
                "name": "start",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2173:12:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 6812,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "2173:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6815,
                "name": "cliff",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2195:12:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 6814,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "2195:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6817,
                "name": "vesting",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2217:14:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 6816,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "2217:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6819,
                "name": "revokable",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2241:14:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 6818,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2241:4:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "TokenVesting",
            "nodeType": "StructDefinition",
            "scope": 7603,
            "src": "2119:143:11",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6822,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2268:24:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
              "typeString": "contract MiniMeToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 6821,
              "name": "MiniMeToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6683,
              "src": "2268:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                "typeString": "contract MiniMeToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6824,
            "name": "maxAccountTokens",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2298:31:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 6823,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2298:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6830,
            "name": "vestings",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2449:72:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
              "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting))"
            },
            "typeName": {
              "id": 6829,
              "keyType": {
                "id": 6825,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2458:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2449:54:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting))"
              },
              "valueType": {
                "id": 6828,
                "keyType": {
                  "id": 6826,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2478:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "2469:33:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                  "typeString": "mapping(uint256 => struct TokenManager.TokenVesting)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 6827,
                  "name": "TokenVesting",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6820,
                  "src": "2489:12:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                    "typeString": "struct TokenManager.TokenVesting"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 6834,
            "name": "vestingsLengths",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2527:51:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 6833,
              "keyType": {
                "id": 6831,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2536:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2527:28:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 6832,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2547:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6838,
            "name": "everHeld",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2584:41:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 6837,
              "keyType": {
                "id": 6835,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2593:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2584:25:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 6836,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2604:4:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6846,
            "name": "NewVesting",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6840,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6846,
                  "src": "2750:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2750:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6842,
                  "indexed": false,
                  "name": "vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6846,
                  "src": "2776:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6841,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2776:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6844,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6846,
                  "src": "2795:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6843,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2795:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2749:61:11"
            },
            "src": "2733:78:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6854,
            "name": "RevokeVesting",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6853,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6848,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6854,
                  "src": "2836:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6847,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2836:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6850,
                  "indexed": false,
                  "name": "vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6854,
                  "src": "2862:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6849,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2862:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6852,
                  "indexed": false,
                  "name": "nonVestedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6854,
                  "src": "2881:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6851,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2881:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2835:70:11"
            },
            "src": "2816:90:11"
          },
          {
            "body": {
              "id": 6870,
              "nodeType": "Block",
              "src": "2972:197:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6861,
                          "name": "_vestingId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6858,
                          "src": "3095:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6862,
                            "name": "vestingsLengths",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6834,
                            "src": "3108:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 6864,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6863,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6856,
                            "src": "3124:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3108:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3095:37:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6866,
                        "name": "ERROR_NO_VESTING",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6776,
                        "src": "3134:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6860,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3087:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3087:64:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6868,
                  "nodeType": "ExpressionStatement",
                  "src": "3087:64:11"
                },
                {
                  "id": 6869,
                  "nodeType": "PlaceholderStatement",
                  "src": "3161:1:11"
                }
              ]
            },
            "documentation": null,
            "id": 6871,
            "name": "vestingExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 6859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6856,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 6871,
                  "src": "2935:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6855,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2935:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6858,
                  "name": "_vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6871,
                  "src": "2952:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2952:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2934:37:11"
            },
            "src": "2912:257:11",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6925,
              "nodeType": "Block",
              "src": "3907:338:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6882,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "3917:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 6883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3917:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6884,
                  "nodeType": "ExpressionStatement",
                  "src": "3917:13:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6886,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6873,
                              "src": "3949:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            },
                            "id": 6887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "controller",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5633,
                            "src": "3949:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 6888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3949:19:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6890,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15292,
                              "src": "3980:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TokenManager_$7603",
                                "typeString": "contract TokenManager"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_TokenManager_$7603",
                                "typeString": "contract TokenManager"
                              }
                            ],
                            "id": 6889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3972:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 6891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3972:13:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3949:36:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6893,
                        "name": "ERROR_TOKEN_CONTROLLER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6779,
                        "src": "3987:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6885,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3941:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6894,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3941:69:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6895,
                  "nodeType": "ExpressionStatement",
                  "src": "3941:69:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6896,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6822,
                      "src": "4021:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6897,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6873,
                      "src": "4029:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "4021:14:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 6899,
                  "nodeType": "ExpressionStatement",
                  "src": "4021:14:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6900,
                      "name": "maxAccountTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6824,
                      "src": "4045:16:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6901,
                          "name": "_maxAccountTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6877,
                          "src": "4064:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4085:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4064:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "id": 6908,
                        "name": "_maxAccountTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6877,
                        "src": "4103:17:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6909,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "4064:56:11",
                      "trueExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "4097:2:11",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 6905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4098:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_-1_by_1",
                              "typeString": "int_const -1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_-1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 6904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4089:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 6907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4089:11:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4045:75:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6911,
                  "nodeType": "ExpressionStatement",
                  "src": "4045:75:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 6916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 6912,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6822,
                          "src": "4135:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        },
                        "id": 6913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transfersEnabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5705,
                        "src": "4135:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                          "typeString": "function () view external returns (bool)"
                        }
                      },
                      "id": 6914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4135:24:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 6915,
                      "name": "_transferable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6875,
                      "src": "4163:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4135:41:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6924,
                  "nodeType": "IfStatement",
                  "src": "4131:108:11",
                  "trueBody": {
                    "id": 6923,
                    "nodeType": "Block",
                    "src": "4178:61:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6920,
                              "name": "_transferable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6875,
                              "src": "4214:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6917,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "4192:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            },
                            "id": 6919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "enableTransfers",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6373,
                            "src": "4192:21:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                              "typeString": "function (bool) external"
                            }
                          },
                          "id": 6921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4192:36:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6922,
                        "nodeType": "ExpressionStatement",
                        "src": "4192:36:11"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Initialize Token Manager for `_token.symbol(): string`, whose tokens are `transferable ? 'not' : ''` transferable`_maxAccountTokens > 0 ? ' and limited to a maximum of ' + @tokenAmount(_token, _maxAccountTokens, false) + ' per account' : ''`\n@param _token MiniMeToken address for the managed token (Token Manager instance must be already set as the token controller)\n@param _transferable whether the token can be transferred by holders\n@param _maxAccountTokens Maximum amount of tokens an account can have (0 for infinite tokens)",
            "id": 6926,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 6880,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6879,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "3894:8:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3894:8:11"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6873,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 6926,
                  "src": "3781:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6872,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "3781:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6875,
                  "name": "_transferable",
                  "nodeType": "VariableDeclaration",
                  "scope": 6926,
                  "src": "3809:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6874,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3809:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6877,
                  "name": "_maxAccountTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 6926,
                  "src": "3837:25:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6876,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3837:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3771:97:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6881,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3907:0:11"
            },
            "scope": 7603,
            "src": "3752:493:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6953,
              "nodeType": "Block",
              "src": "4564:147:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6942,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6928,
                            "src": "4608:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6943,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6930,
                            "src": "4619:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6941,
                          "name": "_isBalanceIncreaseAllowed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7413,
                          "src": "4582:25:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 6944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4582:45:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6945,
                        "name": "ERROR_MINT_BALANCE_INCREASE_NOT_ALLOWED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6782,
                        "src": "4629:39:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6940,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4574:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4574:95:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6947,
                  "nodeType": "ExpressionStatement",
                  "src": "4574:95:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6949,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6928,
                        "src": "4685:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6950,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6930,
                        "src": "4696:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6948,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7602,
                      "src": "4679:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4679:25:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6952,
                  "nodeType": "ExpressionStatement",
                  "src": "4679:25:11"
                }
              ]
            },
            "documentation": "@notice Mint `@tokenAmount(self.token(): address, _amount, false)` tokens for `_receiver`\n@param _receiver The address receiving the tokens\n@param _amount Number of tokens minted",
            "id": 6954,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6933,
                    "name": "MINT_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6750,
                    "src": "4528:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6935,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6928,
                        "src": "4543:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6936,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6930,
                        "src": "4554:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6934,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "4539:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 6937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4539:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 6938,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6932,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "4522:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4522:41:11"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6928,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6954,
                  "src": "4477:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6927,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4477:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6930,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6954,
                  "src": "4496:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6929,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4496:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4476:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6939,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4564:0:11"
            },
            "scope": 7603,
            "src": "4463:248:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6972,
              "nodeType": "Block",
              "src": "4952:46:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6967,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "4976:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          ],
                          "id": 6966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4968:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 6968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4968:13:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6969,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6956,
                        "src": "4983:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6965,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7602,
                      "src": "4962:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4962:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6971,
                  "nodeType": "ExpressionStatement",
                  "src": "4962:29:11"
                }
              ]
            },
            "documentation": "@notice Mint `@tokenAmount(self.token(): address, _amount, false)` tokens for the Token Manager\n@param _amount Number of tokens minted",
            "id": 6973,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6959,
                    "name": "ISSUE_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6755,
                    "src": "4926:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6961,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6956,
                        "src": "4942:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6960,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9404,
                      "src": "4938:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 6962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4938:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 6963,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6958,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "4920:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4920:31:11"
              }
            ],
            "name": "issue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6957,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6956,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6973,
                  "src": "4894:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6955,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4894:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4893:17:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6964,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4952:0:11"
            },
            "scope": 7603,
            "src": "4879:119:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6992,
              "nodeType": "Block",
              "src": "5361:44:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6988,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6975,
                        "src": "5379:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6989,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6977,
                        "src": "5390:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6987,
                      "name": "_assign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7587,
                      "src": "5371:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5371:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6991,
                  "nodeType": "ExpressionStatement",
                  "src": "5371:27:11"
                }
              ]
            },
            "documentation": "@notice Assign `@tokenAmount(self.token(): address, _amount, false)` tokens to `_receiver` from the Token Manager's holdings\n@param _receiver The address receiving the tokens\n@param _amount Number of tokens transferred",
            "id": 6993,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6980,
                    "name": "ASSIGN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6760,
                    "src": "5323:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6982,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6975,
                        "src": "5340:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6983,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6977,
                        "src": "5351:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6981,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "5336:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 6984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 6985,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6979,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "5317:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5317:43:11"
              }
            ],
            "name": "assign",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6975,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6993,
                  "src": "5272:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6974,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5272:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6977,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6993,
                  "src": "5291:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5291:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5271:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6986,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5361:0:11"
            },
            "scope": 7603,
            "src": "5256:149:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7014,
              "nodeType": "Block",
              "src": "5720:133:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7010,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6995,
                        "src": "5829:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7011,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6997,
                        "src": "5838:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7007,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6822,
                        "src": "5809:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 7009,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "destroyTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6361,
                      "src": "5809:19:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 7012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5809:37:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7013,
                  "nodeType": "ExpressionStatement",
                  "src": "5809:37:11"
                }
              ]
            },
            "documentation": "@notice Burn `@tokenAmount(self.token(): address, _amount, false)` tokens from `_holder`\n@param _holder Holder of tokens being burned\n@param _amount Number of tokens being burned",
            "id": 7015,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7000,
                    "name": "BURN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6770,
                    "src": "5686:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7002,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6995,
                        "src": "5701:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7003,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6997,
                        "src": "5710:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7001,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "5697:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5697:21:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7005,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6999,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "5680:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5680:39:11"
              }
            ],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6998,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6995,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7015,
                  "src": "5637:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6994,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5637:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6997,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7015,
                  "src": "5654:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6996,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5654:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5636:34:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7006,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5720:0:11"
            },
            "scope": 7603,
            "src": "5623:230:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7093,
              "nodeType": "Block",
              "src": "6879:537:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7040,
                            "name": "vestingsLengths",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6834,
                            "src": "6897:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 7042,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7041,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7017,
                            "src": "6913:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6897:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7043,
                          "name": "MAX_VESTINGS_PER_ADDRESS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6773,
                          "src": "6926:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6897:53:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7045,
                        "name": "ERROR_TOO_MANY_VESTINGS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6788,
                        "src": "6952:23:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7039,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "6889:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6889:87:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7047,
                  "nodeType": "ExpressionStatement",
                  "src": "6889:87:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 7051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7049,
                            "name": "_start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7021,
                            "src": "6995:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7050,
                            "name": "_cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7023,
                            "src": "7005:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6995:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 7054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7052,
                            "name": "_cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7023,
                            "src": "7015:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7053,
                            "name": "_vested",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7025,
                            "src": "7025:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "7015:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6995:37:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7056,
                        "name": "ERROR_WRONG_CLIFF_DATE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6791,
                        "src": "7034:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7048,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "6987:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6987:70:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7058,
                  "nodeType": "ExpressionStatement",
                  "src": "6987:70:11"
                },
                {
                  "assignments": [
                    7060
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7060,
                      "name": "vestingId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7094,
                      "src": "7068:17:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7059,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7068:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7065,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "7088:28:11",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7061,
                        "name": "vestingsLengths",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6834,
                        "src": "7088:15:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 7063,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7062,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "7104:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7088:26:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7068:48:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7066,
                          "name": "vestings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6830,
                          "src": "7126:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                            "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                          }
                        },
                        "id": 7069,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7067,
                          "name": "_receiver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7017,
                          "src": "7135:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7126:19:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                          "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                        }
                      },
                      "id": 7070,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7068,
                        "name": "vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7060,
                        "src": "7146:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7126:30:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                        "typeString": "struct TokenManager.TokenVesting storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7072,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7019,
                          "src": "7185:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7073,
                          "name": "_start",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7021,
                          "src": "7206:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7074,
                          "name": "_cliff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7023,
                          "src": "7226:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7075,
                          "name": "_vested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7025,
                          "src": "7246:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7076,
                          "name": "_revokable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7027,
                          "src": "7267:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 7071,
                        "name": "TokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6820,
                        "src": "7159:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_TokenVesting_$6820_storage_ptr_$",
                          "typeString": "type(struct TokenManager.TokenVesting storage pointer)"
                        }
                      },
                      "id": 7077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7159:128:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_memory",
                        "typeString": "struct TokenManager.TokenVesting memory"
                      }
                    },
                    "src": "7126:161:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                      "typeString": "struct TokenManager.TokenVesting storage ref"
                    }
                  },
                  "id": 7079,
                  "nodeType": "ExpressionStatement",
                  "src": "7126:161:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7081,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "7306:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7082,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7019,
                        "src": "7317:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7080,
                      "name": "_assign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7587,
                      "src": "7298:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 7083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7298:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7084,
                  "nodeType": "ExpressionStatement",
                  "src": "7298:27:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7086,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "7352:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7087,
                        "name": "vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7060,
                        "src": "7363:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7088,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7019,
                        "src": "7374:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7085,
                      "name": "NewVesting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6846,
                      "src": "7341:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 7089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7341:41:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7090,
                  "nodeType": "EmitStatement",
                  "src": "7336:46:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7091,
                    "name": "vestingId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7060,
                    "src": "7400:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7038,
                  "id": 7092,
                  "nodeType": "Return",
                  "src": "7393:16:11"
                }
              ]
            },
            "documentation": "@notice Assign `@tokenAmount(self.token(): address, _amount, false)` tokens to `_receiver` from the Token Manager's holdings with a `_revokable : 'revokable' : ''` vesting starting at `@formatDate(_start)`, cliff at `@formatDate(_cliff)` (first portion of tokens transferable), and completed vesting at `@formatDate(_vested)` (all tokens transferable)\n@param _receiver The address receiving the tokens\n@param _amount Number of tokens vested\n@param _start Date the vesting calculations start\n@param _cliff Date when the initial portion of tokens are transferable\n@param _vested Date when all tokens are transferable\n@param _revokable Whether the vesting can be revoked by the Token Manager",
            "id": 7094,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7030,
                    "name": "ASSIGN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6760,
                    "src": "6811:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7032,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "6828:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7033,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7019,
                        "src": "6839:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7031,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "6824:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6824:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7035,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7029,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "6805:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6805:43:11"
              }
            ],
            "name": "assignVested",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7017,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6636:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7016,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6636:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7019,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6663:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7018,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6663:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7021,
                  "name": "_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6688:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7020,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "6688:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7023,
                  "name": "_cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6711:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7022,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "6711:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7025,
                  "name": "_vested",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6734:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7024,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "6734:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7027,
                  "name": "_revokable",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6758:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7026,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6758:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6626:153:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7038,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7037,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6866:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7036,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6866:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6865:9:11"
            },
            "scope": 7603,
            "src": "6605:811:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7165,
              "nodeType": "Block",
              "src": "7820:746:11",
              "statements": [
                {
                  "assignments": [
                    7112
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7112,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 7166,
                      "src": "7830:22:11",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                        "typeString": "struct TokenManager.TokenVesting"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7111,
                        "name": "TokenVesting",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6820,
                        "src": "7830:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7118,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7113,
                        "name": "vestings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6830,
                        "src": "7855:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                        }
                      },
                      "id": 7115,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7114,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7096,
                        "src": "7864:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7855:17:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                        "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                      }
                    },
                    "id": 7117,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7116,
                      "name": "_vestingId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7098,
                      "src": "7873:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7855:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                      "typeString": "struct TokenManager.TokenVesting storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7830:54:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7120,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "7902:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7121,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "revokable",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6819,
                        "src": "7902:11:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7122,
                        "name": "ERROR_VESTING_NOT_REVOKABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6794,
                        "src": "7915:27:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7119,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "7894:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7894:49:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7124,
                  "nodeType": "ExpressionStatement",
                  "src": "7894:49:11"
                },
                {
                  "assignments": [
                    7126
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7126,
                      "name": "nonVested",
                      "nodeType": "VariableDeclaration",
                      "scope": 7166,
                      "src": "7954:17:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7125,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7954:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7139,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7128,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8013:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7129,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6811,
                        "src": "8013:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7130,
                          "name": "getTimestamp64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11199,
                          "src": "8035:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 7131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8035:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7132,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8065:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7133,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "start",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6813,
                        "src": "8065:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7134,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8086:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7135,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "cliff",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6815,
                        "src": "8086:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7136,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8107:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7137,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vesting",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6817,
                        "src": "8107:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 7127,
                      "name": "_calculateNonVestedTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7561,
                      "src": "7974:25:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7974:152:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7954:172:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8225:36:11",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7140,
                          "name": "vestings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6830,
                          "src": "8232:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                            "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                          }
                        },
                        "id": 7142,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7141,
                          "name": "_holder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7096,
                          "src": "8241:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8232:17:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                          "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                        }
                      },
                      "id": 7144,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7143,
                        "name": "_vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7098,
                        "src": "8250:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8232:29:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                        "typeString": "struct TokenManager.TokenVesting storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7146,
                  "nodeType": "ExpressionStatement",
                  "src": "8225:36:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7150,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7096,
                            "src": "8426:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7152,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15292,
                                "src": "8443:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_TokenManager_$7603",
                                  "typeString": "contract TokenManager"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_TokenManager_$7603",
                                  "typeString": "contract TokenManager"
                                }
                              ],
                              "id": 7151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8435:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 7153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8435:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7154,
                            "name": "nonVested",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7126,
                            "src": "8450:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7148,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "8407:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5827,
                          "src": "8407:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 7155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8407:53:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7156,
                        "name": "ERROR_REVOKE_TRANSFER_FROM_REVERTED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6797,
                        "src": "8462:35:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7147,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "8399:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8399:99:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7158,
                  "nodeType": "ExpressionStatement",
                  "src": "8399:99:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7160,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7096,
                        "src": "8528:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7161,
                        "name": "_vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7098,
                        "src": "8537:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7162,
                        "name": "nonVested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7126,
                        "src": "8549:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7159,
                      "name": "RevokeVesting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6854,
                      "src": "8514:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 7163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8514:45:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7164,
                  "nodeType": "EmitStatement",
                  "src": "8509:50:11"
                }
              ]
            },
            "documentation": "@notice Revoke vesting #`_vestingId` from `_holder`, returning unvested tokens to the Token Manager\n@param _holder Address whose vesting to revoke\n@param _vestingId Numeric id of the vesting",
            "id": 7166,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7101,
                    "name": "REVOKE_VESTINGS_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6765,
                    "src": "7737:20:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7103,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7096,
                        "src": "7763:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7102,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9217,
                      "src": "7759:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7759:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7105,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7100,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "7731:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7731:41:11"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7107,
                    "name": "_holder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7096,
                    "src": "7795:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 7108,
                    "name": "_vestingId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7098,
                    "src": "7804:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 7109,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7106,
                  "name": "vestingExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6871,
                  "src": "7781:13:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$",
                    "typeString": "modifier (address,uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7781:34:11"
              }
            ],
            "name": "revokeVesting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7099,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7096,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7166,
                  "src": "7669:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7095,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7669:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7098,
                  "name": "_vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7166,
                  "src": "7686:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7097,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7686:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7668:37:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7110,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7820:0:11"
            },
            "scope": 7603,
            "src": "7646:920:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7211,
              "nodeType": "Block",
              "src": "8809:464:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7173,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15153,
                              "src": "8838:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8838:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7175,
                            "name": "_evmScript",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7168,
                            "src": "8850:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 7172,
                          "name": "canForward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            7240
                          ],
                          "referencedDeclaration": 7240,
                          "src": "8827:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 7176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8827:34:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7177,
                        "name": "ERROR_CAN_NOT_FORWARD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6803,
                        "src": "8863:21:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7171,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "8819:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8819:66:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7179,
                  "nodeType": "ExpressionStatement",
                  "src": "8819:66:11"
                },
                {
                  "assignments": [
                    7181
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7181,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 7212,
                      "src": "8895:18:11",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7180,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "8895:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7186,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8926:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 7183,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8916:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 7182,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "8920:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 7185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8916:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8895:33:11"
                },
                {
                  "assignments": [
                    7190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7190,
                      "name": "blacklist",
                      "nodeType": "VariableDeclaration",
                      "scope": 7212,
                      "src": "9132:26:11",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9132:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7189,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9132:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7196,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 7194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9175:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 7193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "9161:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9165:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7192,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9165:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 7195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9161:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9132:45:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7197,
                        "name": "blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7190,
                        "src": "9187:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 7199,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9197:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9187:12:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7201,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6822,
                          "src": "9210:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 7200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9202:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9202:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9187:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 7204,
                  "nodeType": "ExpressionStatement",
                  "src": "9187:29:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7206,
                        "name": "_evmScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7168,
                        "src": "9237:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7207,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7181,
                        "src": "9249:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7208,
                        "name": "blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7190,
                        "src": "9256:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 7205,
                      "name": "runScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11788,
                      "src": "9227:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)"
                      }
                    },
                    "id": 7209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9227:39:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 7210,
                  "nodeType": "ExpressionStatement",
                  "src": "9227:39:11"
                }
              ]
            },
            "documentation": "@notice Execute desired action as a token holder\n@dev IForwarder interface conformance. Forwards any token holder action.\n@param _evmScript Script being executed",
            "id": 7212,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "forward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7169,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7168,
                  "name": "_evmScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 7212,
                  "src": "8784:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7167,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8784:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8783:18:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7170,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8809:0:11"
            },
            "scope": 7603,
            "src": "8767:506:11",
            "stateMutability": "nonpayable",
            "superFunction": 10683,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7219,
              "nodeType": "Block",
              "src": "9329:28:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9346:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7216,
                  "id": 7218,
                  "nodeType": "Return",
                  "src": "9339:11:11"
                }
              ]
            },
            "documentation": null,
            "id": 7220,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isForwarder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7213,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9299:2:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7215,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7220,
                  "src": "9323:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7214,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9323:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9322:6:11"
            },
            "scope": 7603,
            "src": "9279:78:11",
            "stateMutability": "pure",
            "superFunction": 10669,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7239,
              "nodeType": "Block",
              "src": "9434:72:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 7229,
                        "name": "hasInitialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10782,
                        "src": "9451:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                          "typeString": "function () view returns (bool)"
                        }
                      },
                      "id": 7230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9451:16:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7233,
                            "name": "_sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7222,
                            "src": "9487:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7231,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "9471:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5954,
                          "src": "9471:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 7234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9471:24:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9498:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "9471:28:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9451:48:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7228,
                  "id": 7238,
                  "nodeType": "Return",
                  "src": "9444:55:11"
                }
              ]
            },
            "documentation": null,
            "id": 7240,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canForward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7222,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 7240,
                  "src": "9383:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9383:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7224,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7240,
                  "src": "9400:5:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7223,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9400:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9382:24:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7227,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7240,
                  "src": "9428:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7226,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9428:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9427:6:11"
            },
            "scope": 7603,
            "src": "9363:143:11",
            "stateMutability": "view",
            "superFunction": 10678,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7294,
              "nodeType": "Block",
              "src": "9835:279:11",
              "statements": [
                {
                  "assignments": [
                    7262
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7262,
                      "name": "tokenVesting",
                      "nodeType": "VariableDeclaration",
                      "scope": 7295,
                      "src": "9845:33:11",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                        "typeString": "struct TokenManager.TokenVesting"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7261,
                        "name": "TokenVesting",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6820,
                        "src": "9845:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7268,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7263,
                        "name": "vestings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6830,
                        "src": "9881:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                        }
                      },
                      "id": 7265,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7264,
                        "name": "_recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7242,
                        "src": "9890:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9881:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                        "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                      }
                    },
                    "id": 7267,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7266,
                      "name": "_vestingId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7244,
                      "src": "9902:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9881:32:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                      "typeString": "struct TokenManager.TokenVesting storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9845:68:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7269,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7251,
                      "src": "9923:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7270,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "9932:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7271,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6811,
                      "src": "9932:19:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9923:28:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7273,
                  "nodeType": "ExpressionStatement",
                  "src": "9923:28:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7274,
                      "name": "start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7253,
                      "src": "9961:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7275,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "9969:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7276,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "start",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6813,
                      "src": "9969:18:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9961:26:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 7278,
                  "nodeType": "ExpressionStatement",
                  "src": "9961:26:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7279,
                      "name": "cliff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7255,
                      "src": "9997:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7280,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "10005:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7281,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "cliff",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6815,
                      "src": "10005:18:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9997:26:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 7283,
                  "nodeType": "ExpressionStatement",
                  "src": "9997:26:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7284,
                      "name": "vesting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7257,
                      "src": "10033:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7285,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "10043:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7286,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "vesting",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6817,
                      "src": "10043:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10033:30:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 7288,
                  "nodeType": "ExpressionStatement",
                  "src": "10033:30:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7289,
                      "name": "revokable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7259,
                      "src": "10073:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7290,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "10085:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7291,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "revokable",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6819,
                      "src": "10085:22:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10073:34:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7293,
                  "nodeType": "ExpressionStatement",
                  "src": "10073:34:11"
                }
              ]
            },
            "documentation": null,
            "id": 7295,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7247,
                    "name": "_recipient",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7242,
                    "src": "9644:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 7248,
                    "name": "_vestingId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7244,
                    "src": "9656:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 7249,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7246,
                  "name": "vestingExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6871,
                  "src": "9630:13:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$",
                    "typeString": "modifier (address,uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9630:37:11"
              }
            ],
            "name": "getVesting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7242,
                  "name": "_recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9541:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7241,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9541:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7244,
                  "name": "_vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9569:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7243,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9569:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9531:62:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7251,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9698:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9698:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7253,
                  "name": "start",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9726:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7252,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9726:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7255,
                  "name": "cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9752:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7254,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9752:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7257,
                  "name": "vesting",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9778:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7256,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9778:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7259,
                  "name": "revokable",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9806:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7258,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9806:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9684:146:11"
            },
            "scope": 7603,
            "src": "9512:602:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7358,
              "nodeType": "Block",
              "src": "10608:436:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7309,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15153,
                            "src": "10626:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10626:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7312,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "10648:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            ],
                            "id": 7311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10640:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10640:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10626:28:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7315,
                        "name": "ERROR_ON_TRANSFER_WRONG_SENDER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6806,
                        "src": "10656:30:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7308,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "10618:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10618:69:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7317,
                  "nodeType": "ExpressionStatement",
                  "src": "10618:69:11"
                },
                {
                  "assignments": [
                    7319
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7319,
                      "name": "includesTokenManager",
                      "nodeType": "VariableDeclaration",
                      "scope": 7359,
                      "src": "10698:25:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7318,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10698:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7331,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 7324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7320,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7297,
                        "src": "10726:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7322,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "10743:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          ],
                          "id": 7321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10735:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 7323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10735:13:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "10726:22:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 7329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7325,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7299,
                        "src": "10752:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7327,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "10767:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          ],
                          "id": 7326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10759:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 7328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10759:13:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "10752:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10726:46:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10698:74:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 7333,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10787:21:11",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 7332,
                      "name": "includesTokenManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7319,
                      "src": "10788:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7355,
                  "nodeType": "IfStatement",
                  "src": "10783:233:11",
                  "trueBody": {
                    "id": 7354,
                    "nodeType": "Block",
                    "src": "10810:206:11",
                    "statements": [
                      {
                        "assignments": [
                          7335
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7335,
                            "name": "toCanReceive",
                            "nodeType": "VariableDeclaration",
                            "scope": 7359,
                            "src": "10824:17:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7334,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10824:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7340,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7337,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7299,
                              "src": "10870:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7338,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7301,
                              "src": "10875:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7336,
                            "name": "_isBalanceIncreaseAllowed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7413,
                            "src": "10844:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) view returns (bool)"
                            }
                          },
                          "id": 7339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10844:39:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10824:59:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "10901:13:11",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 7341,
                              "name": "toCanReceive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7335,
                              "src": "10902:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7344,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7297,
                                  "src": "10938:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7345,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15155,
                                  "src": "10945:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7343,
                                "name": "transferableBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7497,
                                "src": "10918:19:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256) view returns (uint256)"
                                }
                              },
                              "id": 7346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10918:31:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7347,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7301,
                              "src": "10952:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10918:41:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10901:58:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7353,
                        "nodeType": "IfStatement",
                        "src": "10897:109:11",
                        "trueBody": {
                          "id": 7352,
                          "nodeType": "Block",
                          "src": "10961:45:11",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 7350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10986:5:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 7307,
                              "id": 7351,
                              "nodeType": "Return",
                              "src": "10979:12:11"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11033:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7307,
                  "id": 7357,
                  "nodeType": "Return",
                  "src": "11026:11:11"
                }
              ]
            },
            "documentation": null,
            "id": 7359,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7304,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7303,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "10579:13:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10579:13:11"
              }
            ],
            "name": "onTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7297,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10530:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7296,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10530:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7299,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10545:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7298,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10545:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7301,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10558:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7300,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10558:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10529:42:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7306,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10602:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7305,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10602:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10601:6:11"
            },
            "scope": 7603,
            "src": "10510:534:11",
            "stateMutability": "nonpayable",
            "superFunction": 5605,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7378,
              "nodeType": "Block",
              "src": "11262:361:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7367,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15153,
                            "src": "11531:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11531:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7370,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "11553:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            ],
                            "id": 7369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11545:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11545:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11531:28:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7373,
                        "name": "ERROR_PROXY_PAYMENT_WRONG_SENDER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6809,
                        "src": "11561:32:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7366,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "11523:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11523:71:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7375,
                  "nodeType": "ExpressionStatement",
                  "src": "11523:71:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 7376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11611:5:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 7365,
                  "id": 7377,
                  "nodeType": "Return",
                  "src": "11604:12:11"
                }
              ]
            },
            "documentation": "@notice Called when ether is sent to the MiniMe Token contract\n@return True if the ether is accepted, false for it to throw",
            "id": 7379,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "proxyPayment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7361,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7379,
                  "src": "11223:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7360,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11223:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11222:9:11"
            },
            "payable": true,
            "returnParameters": {
              "id": 7365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7364,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7379,
                  "src": "11256:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7363,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11256:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11255:6:11"
            },
            "scope": 7603,
            "src": "11201:422:11",
            "stateMutability": "payable",
            "superFunction": 5594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7392,
              "nodeType": "Block",
              "src": "11876:28:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11893:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7389,
                  "id": 7391,
                  "nodeType": "Return",
                  "src": "11886:11:11"
                }
              ]
            },
            "documentation": "@dev Notifies the controller about an approval allowing the controller to react if desired\n@return False if the controller does not authorize the approval",
            "id": 7393,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "onApprove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7381,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11830:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11830:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7383,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11839:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11839:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7385,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11848:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7384,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11848:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11829:24:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7388,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11870:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7387,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11870:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11869:6:11"
            },
            "scope": 7603,
            "src": "11811:93:11",
            "stateMutability": "nonpayable",
            "superFunction": 5616,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7412,
              "nodeType": "Block",
              "src": "12004:80:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7407,
                          "name": "_inc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7397,
                          "src": "12052:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7404,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7395,
                              "src": "12037:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7402,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "12021:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            },
                            "id": 7403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5954,
                            "src": "12021:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12021:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14042,
                        "src": "12021:30:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 7408,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12021:36:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7409,
                      "name": "maxAccountTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6824,
                      "src": "12061:16:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12021:56:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7401,
                  "id": 7411,
                  "nodeType": "Return",
                  "src": "12014:63:11"
                }
              ]
            },
            "documentation": null,
            "id": 7413,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isBalanceIncreaseAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7395,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "11945:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7394,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11945:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7397,
                  "name": "_inc",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "11964:9:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7396,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11964:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11944:30:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7400,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "11998:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7399,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11998:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11997:6:11"
            },
            "scope": 7603,
            "src": "11910:174:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7425,
              "nodeType": "Block",
              "src": "12165:57:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7421,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7415,
                        "src": "12202:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7422,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15155,
                        "src": "12211:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7420,
                      "name": "transferableBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7497,
                      "src": "12182:19:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view returns (uint256)"
                      }
                    },
                    "id": 7423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12182:33:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7419,
                  "id": 7424,
                  "nodeType": "Return",
                  "src": "12175:40:11"
                }
              ]
            },
            "documentation": null,
            "id": 7426,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "spendableBalanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7415,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7426,
                  "src": "12118:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7414,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12118:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12117:17:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7418,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7426,
                  "src": "12156:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7417,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12156:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12155:9:11"
            },
            "scope": 7603,
            "src": "12090:132:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7496,
              "nodeType": "Block",
              "src": "12319:590:11",
              "statements": [
                {
                  "assignments": [
                    7436
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7436,
                      "name": "vestingsCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "12329:21:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7435,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12329:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7440,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7437,
                      "name": "vestingsLengths",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6834,
                      "src": "12353:15:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 7439,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7438,
                      "name": "_holder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7428,
                      "src": "12369:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12353:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12329:48:11"
                },
                {
                  "assignments": [
                    7442
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7442,
                      "name": "totalNonTransferable",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "12387:28:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7441,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12387:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7444,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 7443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12418:1:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12387:32:11"
                },
                {
                  "body": {
                    "id": 7486,
                    "nodeType": "Block",
                    "src": "12474:361:11",
                    "statements": [
                      {
                        "assignments": [
                          7456
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7456,
                            "name": "v",
                            "nodeType": "VariableDeclaration",
                            "scope": 7497,
                            "src": "12488:22:11",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                              "typeString": "struct TokenManager.TokenVesting"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7455,
                              "name": "TokenVesting",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6820,
                              "src": "12488:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                "typeString": "struct TokenManager.TokenVesting"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7462,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7457,
                              "name": "vestings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6830,
                              "src": "12513:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                              }
                            },
                            "id": 7459,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7458,
                              "name": "_holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7428,
                              "src": "12522:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12513:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                              "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                            }
                          },
                          "id": 7461,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7460,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7446,
                            "src": "12531:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12513:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                            "typeString": "struct TokenManager.TokenVesting storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12488:45:11"
                      },
                      {
                        "assignments": [
                          7464
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7464,
                            "name": "nonTransferable",
                            "nodeType": "VariableDeclaration",
                            "scope": 7497,
                            "src": "12547:20:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7463,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12547:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7478,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7466,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12613:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7467,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6811,
                              "src": "12613:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7468,
                                  "name": "_time",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7430,
                                  "src": "12639:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toUint64",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11230,
                                "src": "12639:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint64)"
                                }
                              },
                              "id": 7470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12639:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7471,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12673:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7472,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "start",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6813,
                              "src": "12673:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7473,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12698:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7474,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cliff",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6815,
                              "src": "12698:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7475,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12723:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7476,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6817,
                              "src": "12723:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 7465,
                            "name": "_calculateNonVestedTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7561,
                            "src": "12570:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12570:176:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12547:199:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7479,
                            "name": "totalNonTransferable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7442,
                            "src": "12760:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7482,
                                "name": "nonTransferable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7464,
                                "src": "12808:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7480,
                                "name": "totalNonTransferable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7442,
                                "src": "12783:20:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14042,
                              "src": "12783:24:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12783:41:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12760:64:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7485,
                        "nodeType": "ExpressionStatement",
                        "src": "12760:64:11"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7449,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7446,
                      "src": "12450:1:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7450,
                      "name": "vestingsCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7436,
                      "src": "12454:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12450:17:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7487,
                  "initializationExpression": {
                    "assignments": [
                      7446
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7446,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 7497,
                        "src": "12435:9:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12435:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 7448,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12447:1:11",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12435:13:11"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 7453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "12469:3:11",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 7452,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7446,
                        "src": "12469:1:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7454,
                    "nodeType": "ExpressionStatement",
                    "src": "12469:3:11"
                  },
                  "nodeType": "ForStatement",
                  "src": "12430:405:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7493,
                        "name": "totalNonTransferable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7442,
                        "src": "12881:20:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7490,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7428,
                            "src": "12868:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7488,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "12852:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5954,
                          "src": "12852:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 7491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12852:24:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14017,
                      "src": "12852:28:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12852:50:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7434,
                  "id": 7495,
                  "nodeType": "Return",
                  "src": "12845:57:11"
                }
              ]
            },
            "documentation": null,
            "id": 7497,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "transferableBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7428,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7497,
                  "src": "12257:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7427,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12257:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7430,
                  "name": "_time",
                  "nodeType": "VariableDeclaration",
                  "scope": 7497,
                  "src": "12274:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7429,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12274:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12256:32:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7434,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7433,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7497,
                  "src": "12310:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7432,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12310:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12309:9:11"
            },
            "scope": 7603,
            "src": "12228:681:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7510,
              "nodeType": "Block",
              "src": "13136:48:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7504,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7499,
                      "src": "13153:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7506,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6822,
                          "src": "13171:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 7505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13163:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13163:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13153:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7503,
                  "id": 7509,
                  "nodeType": "Return",
                  "src": "13146:31:11"
                }
              ]
            },
            "documentation": "@dev Disable recovery escape hatch for own token,\n     as the it has the concept of issuing tokens without assigning them",
            "id": 7511,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowRecoverability",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7500,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7499,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7511,
                  "src": "13093:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7498,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13093:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13092:16:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7503,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7502,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7511,
                  "src": "13130:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7501,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13130:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13129:6:11"
            },
            "scope": 7603,
            "src": "13064:120:11",
            "stateMutability": "view",
            "superFunction": 11416,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7560,
              "nodeType": "Block",
              "src": "14268:773:11",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7526,
                      "name": "time",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7515,
                      "src": "14344:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7527,
                      "name": "vested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7521,
                      "src": "14352:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14344:14:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7532,
                  "nodeType": "IfStatement",
                  "src": "14340:53:11",
                  "trueBody": {
                    "id": 7531,
                    "nodeType": "Block",
                    "src": "14360:33:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14381:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 7525,
                        "id": 7530,
                        "nodeType": "Return",
                        "src": "14374:8:11"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7533,
                      "name": "time",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7515,
                      "src": "14406:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7534,
                      "name": "cliff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7519,
                      "src": "14413:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14406:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7539,
                  "nodeType": "IfStatement",
                  "src": "14402:56:11",
                  "trueBody": {
                    "id": 7538,
                    "nodeType": "Block",
                    "src": "14420:38:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7536,
                          "name": "tokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7513,
                          "src": "14441:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7525,
                        "id": 7537,
                        "nodeType": "Return",
                        "src": "14434:13:11"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    7541
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7541,
                      "name": "vestedTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 7561,
                      "src": "14889:20:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7540,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14889:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7554,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7553,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7546,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7517,
                              "src": "14932:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7544,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7515,
                              "src": "14923:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14017,
                            "src": "14923:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14923:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 7542,
                          "name": "tokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7513,
                          "src": "14912:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13967,
                        "src": "14912:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 7548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14912:27:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7551,
                          "name": "start",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7517,
                          "src": "14953:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 7549,
                          "name": "vested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7521,
                          "src": "14942:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14017,
                        "src": "14942:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 7552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14942:17:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14912:47:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14889:70:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7557,
                        "name": "vestedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7541,
                        "src": "15021:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7555,
                        "name": "tokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7513,
                        "src": "15010:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14017,
                      "src": "15010:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15010:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7525,
                  "id": 7559,
                  "nodeType": "Return",
                  "src": "15003:31:11"
                }
              ]
            },
            "documentation": "@dev Calculate amount of non-vested tokens at a specifc time\n@param tokens The total amount of tokens vested\n@param time The time at which to check\n@param start The date vesting started\n@param cliff The cliff period\n@param vested The fully vested date\n@return The amount of non-vested tokens of a specific grant\n transferableTokens\n  |                         _/--------   vestedTokens rect\n  |                       _/\n  |                     _/\n  |                   _/\n  |                 _/\n  |                /\n  |              .|\n  |            .  |\n  |          .    |\n  |        .      |\n  |      .        |\n  |    .          |\n  +===+===========+---------+----------> time\n     Start       Cliff    Vested",
            "id": 7561,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_calculateNonVestedTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7513,
                  "name": "tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14096:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7512,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14096:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7515,
                  "name": "time",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14120:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7514,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14120:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7517,
                  "name": "start",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14142:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7516,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14142:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7519,
                  "name": "cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14165:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14165:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7521,
                  "name": "vested",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14188:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7520,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14188:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14086:122:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7524,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14255:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7523,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14255:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14254:9:11"
            },
            "scope": 7603,
            "src": "14052:989:11",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 7586,
              "nodeType": "Block",
              "src": "15109:311:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7570,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7563,
                            "src": "15153:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7571,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7565,
                            "src": "15164:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7569,
                          "name": "_isBalanceIncreaseAllowed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7413,
                          "src": "15127:25:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 7572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15127:45:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7573,
                        "name": "ERROR_ASSIGN_BALANCE_INCREASE_NOT_ALLOWED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6785,
                        "src": "15174:41:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7568,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "15119:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15119:97:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7575,
                  "nodeType": "ExpressionStatement",
                  "src": "15119:97:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7579,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "15350:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7580,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7563,
                            "src": "15356:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7581,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7565,
                            "src": "15367:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7577,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "15331:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5827,
                          "src": "15331:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 7582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15331:44:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7583,
                        "name": "ERROR_ASSIGN_TRANSFER_FROM_REVERTED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6800,
                        "src": "15377:35:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "15323:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15323:90:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7585,
                  "nodeType": "ExpressionStatement",
                  "src": "15323:90:11"
                }
              ]
            },
            "documentation": null,
            "id": 7587,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_assign",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7563,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7587,
                  "src": "15064:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15064:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7565,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7587,
                  "src": "15083:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7564,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15083:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15063:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15109:0:11"
            },
            "scope": 7603,
            "src": "15047:373:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7601,
              "nodeType": "Block",
              "src": "15486:104:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7597,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7589,
                        "src": "15517:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7598,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7591,
                        "src": "15528:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7594,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6822,
                        "src": "15496:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 7596,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "generateTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6302,
                      "src": "15496:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 7599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15496:40:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7600,
                  "nodeType": "ExpressionStatement",
                  "src": "15496:40:11"
                }
              ]
            },
            "documentation": null,
            "id": 7602,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7589,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7602,
                  "src": "15441:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7588,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15441:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7591,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7602,
                  "src": "15460:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7590,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15460:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15440:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7593,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15486:0:11"
            },
            "scope": 7603,
            "src": "15426:164:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 7604,
        "src": "518:15074:11"
      }
    ],
    "src": "94:15499:11"
  },
  "legacyAST": {
    "absolutePath": "@aragon/apps-token-manager/contracts/TokenManager.sol",
    "exportedSymbols": {
      "TokenManager": [
        7603
      ]
    },
    "id": 7604,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6726,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "94:23:11"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 6727,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 10490,
        "src": "119:49:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
        "file": "@aragon/os/contracts/common/IForwarder.sol",
        "id": 6728,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 10685,
        "src": "169:52:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "file": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "id": 6729,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 11232,
        "src": "222:56:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/token/ERC20.sol",
        "file": "@aragon/os/contracts/lib/token/ERC20.sol",
        "id": 6730,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 14295,
        "src": "280:50:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "id": 6731,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 14065,
        "src": "331:52:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/ITokenController.sol",
        "file": "@aragon/apps-shared-minime/contracts/ITokenController.sol",
        "id": 6732,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 5618,
        "src": "385:67:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 6733,
        "nodeType": "ImportDirective",
        "scope": 7604,
        "sourceUnit": 6725,
        "src": "453:62:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6734,
              "name": "ITokenController",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5617,
              "src": "543:16:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITokenController_$5617",
                "typeString": "contract ITokenController"
              }
            },
            "id": 6735,
            "nodeType": "InheritanceSpecifier",
            "src": "543:16:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6736,
              "name": "IForwarder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10684,
              "src": "561:10:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IForwarder_$10684",
                "typeString": "contract IForwarder"
              }
            },
            "id": 6737,
            "nodeType": "InheritanceSpecifier",
            "src": "561:10:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6738,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10489,
              "src": "573:9:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$10489",
                "typeString": "contract AragonApp"
              }
            },
            "id": 6739,
            "nodeType": "InheritanceSpecifier",
            "src": "573:9:11"
          }
        ],
        "contractDependencies": [
          5617,
          9577,
          10365,
          10489,
          10502,
          10662,
          10684,
          10712,
          10810,
          10838,
          10871,
          10908,
          11200,
          11422,
          11823,
          11850,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7603,
        "linearizedBaseContracts": [
          7603,
          10489,
          9577,
          11823,
          13114,
          11850,
          10908,
          11422,
          10838,
          10662,
          10712,
          10502,
          10871,
          10810,
          11200,
          10365,
          10684,
          5617
        ],
        "name": "TokenManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6742,
            "libraryName": {
              "contractScope": null,
              "id": 6740,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14064,
              "src": "595:8:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$14064",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "589:27:11",
            "typeName": {
              "id": 6741,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "608:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 6745,
            "libraryName": {
              "contractScope": null,
              "id": 6743,
              "name": "Uint256Helpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11231,
              "src": "627:14:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Uint256Helpers_$11231",
                "typeString": "library Uint256Helpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "621:33:11",
            "typeName": {
              "id": 6744,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "646:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 6750,
            "name": "MINT_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "660:58:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6746,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "660:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d494e545f524f4c45",
                  "id": 6748,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "706:11:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686",
                    "typeString": "literal_string \"MINT_ROLE\""
                  },
                  "value": "MINT_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686",
                    "typeString": "literal_string \"MINT_ROLE\""
                  }
                ],
                "id": 6747,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "696:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6749,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "696:22:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6755,
            "name": "ISSUE_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "724:60:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6751,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "724:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "49535355455f524f4c45",
                  "id": 6753,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "771:12:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_2406f1e99f79cea012fb88c5c36566feaeefee0f4b98d3a376b49310222b53c4",
                    "typeString": "literal_string \"ISSUE_ROLE\""
                  },
                  "value": "ISSUE_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_2406f1e99f79cea012fb88c5c36566feaeefee0f4b98d3a376b49310222b53c4",
                    "typeString": "literal_string \"ISSUE_ROLE\""
                  }
                ],
                "id": 6752,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "761:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6754,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "761:23:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6760,
            "name": "ASSIGN_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "790:62:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6756,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "790:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "41535349474e5f524f4c45",
                  "id": 6758,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "838:13:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_f5a08927c847d7a29dc35e105208dbde5ce951392105d712761cc5d17440e2ff",
                    "typeString": "literal_string \"ASSIGN_ROLE\""
                  },
                  "value": "ASSIGN_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_f5a08927c847d7a29dc35e105208dbde5ce951392105d712761cc5d17440e2ff",
                    "typeString": "literal_string \"ASSIGN_ROLE\""
                  }
                ],
                "id": 6757,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "828:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6759,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "828:24:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6765,
            "name": "REVOKE_VESTINGS_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "858:80:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6761,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "858:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "5245564f4b455f56455354494e47535f524f4c45",
                  "id": 6763,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "915:22:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_95ffc68daedf1eb334cfcd22ee24a5eeb5a8e58aa40679f2ad247a84140f8d6e",
                    "typeString": "literal_string \"REVOKE_VESTINGS_ROLE\""
                  },
                  "value": "REVOKE_VESTINGS_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_95ffc68daedf1eb334cfcd22ee24a5eeb5a8e58aa40679f2ad247a84140f8d6e",
                    "typeString": "literal_string \"REVOKE_VESTINGS_ROLE\""
                  }
                ],
                "id": 6762,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "905:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6764,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "905:33:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6770,
            "name": "BURN_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "944:58:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6766,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "944:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4255524e5f524f4c45",
                  "id": 6768,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "990:11:11",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22",
                    "typeString": "literal_string \"BURN_ROLE\""
                  },
                  "value": "BURN_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22",
                    "typeString": "literal_string \"BURN_ROLE\""
                  }
                ],
                "id": 6767,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "980:9:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 6769,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "980:22:11",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6773,
            "name": "MAX_VESTINGS_PER_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1009:53:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 6771,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1009:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3530",
              "id": 6772,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1060:2:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_50_by_1",
                "typeString": "int_const 50"
              },
              "value": "50"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 6776,
            "name": "ERROR_NO_VESTING",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1069:58:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6774,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1069:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f4e4f5f56455354494e47",
              "id": 6775,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1112:15:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e58800e54011b78b0f26f397495d939339b84ffc714b84e5f9f82d7f925b4cd4",
                "typeString": "literal_string \"TM_NO_VESTING\""
              },
              "value": "TM_NO_VESTING"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6779,
            "name": "ERROR_TOKEN_CONTROLLER",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1133:70:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6777,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1133:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f544f4b454e5f434f4e54524f4c4c4552",
              "id": 6778,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1182:21:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_665d12afb25ae855835fa801a495db5c0dc17509fd09ae2f0e71ad1c99c0f7ef",
                "typeString": "literal_string \"TM_TOKEN_CONTROLLER\""
              },
              "value": "TM_TOKEN_CONTROLLER"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6782,
            "name": "ERROR_MINT_BALANCE_INCREASE_NOT_ALLOWED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1209:95:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6780,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1209:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f4d494e545f42414c5f494e435f4e4f545f414c4c4f574544",
              "id": 6781,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1275:29:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2b772fcef80de71598aed5681079e38847580b8f43b3cb49ce6848ff4a8d18b0",
                "typeString": "literal_string \"TM_MINT_BAL_INC_NOT_ALLOWED\""
              },
              "value": "TM_MINT_BAL_INC_NOT_ALLOWED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6785,
            "name": "ERROR_ASSIGN_BALANCE_INCREASE_NOT_ALLOWED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1310:99:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6783,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1310:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f41535349474e5f42414c5f494e435f4e4f545f414c4c4f574544",
              "id": 6784,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1378:31:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e39bacc8832f554ae60d5f440057f8cae429db320282edeb0f64d55040d0c73e",
                "typeString": "literal_string \"TM_ASSIGN_BAL_INC_NOT_ALLOWED\""
              },
              "value": "TM_ASSIGN_BAL_INC_NOT_ALLOWED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6788,
            "name": "ERROR_TOO_MANY_VESTINGS",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1415:72:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6786,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1415:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f544f4f5f4d414e595f56455354494e4753",
              "id": 6787,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1465:22:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d7e86ff8841a8dbc5e617dd3cf057b08b2d9a42c406172be99a5de4b7831cf47",
                "typeString": "literal_string \"TM_TOO_MANY_VESTINGS\""
              },
              "value": "TM_TOO_MANY_VESTINGS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6791,
            "name": "ERROR_WRONG_CLIFF_DATE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1493:70:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6789,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1493:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f57524f4e475f434c4946465f44415445",
              "id": 6790,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1542:21:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7153794b46b4c93f4f46a4245605d5f0b27f26ef1574b8394431bdaae283cbc0",
                "typeString": "literal_string \"TM_WRONG_CLIFF_DATE\""
              },
              "value": "TM_WRONG_CLIFF_DATE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6794,
            "name": "ERROR_VESTING_NOT_REVOKABLE",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1569:80:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6792,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1569:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f56455354494e475f4e4f545f5245564f4b41424c45",
              "id": 6793,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1623:26:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_95fd8da2a2e85dbbc02186b47870f457257c14a8e30040d7cdfddd0db2ec8f03",
                "typeString": "literal_string \"TM_VESTING_NOT_REVOKABLE\""
              },
              "value": "TM_VESTING_NOT_REVOKABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6797,
            "name": "ERROR_REVOKE_TRANSFER_FROM_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1655:96:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6795,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1655:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f5245564f4b455f5452414e534645525f46524f4d5f5245564552544544",
              "id": 6796,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1717:34:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_db7e7bea8a3e06053d9ce1a46fec9f3cae3468c59c1d825a9595d219c5fb4ba0",
                "typeString": "literal_string \"TM_REVOKE_TRANSFER_FROM_REVERTED\""
              },
              "value": "TM_REVOKE_TRANSFER_FROM_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6800,
            "name": "ERROR_ASSIGN_TRANSFER_FROM_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1757:96:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6798,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1757:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f41535349474e5f5452414e534645525f46524f4d5f5245564552544544",
              "id": 6799,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1819:34:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_942e082c893982fa16c1067985c53ce2706583b575c0148f5e47f0926af1b6b5",
                "typeString": "literal_string \"TM_ASSIGN_TRANSFER_FROM_REVERTED\""
              },
              "value": "TM_ASSIGN_TRANSFER_FROM_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6803,
            "name": "ERROR_CAN_NOT_FORWARD",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1859:68:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6801,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1859:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f43414e5f4e4f545f464f5257415244",
              "id": 6802,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1907:20:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_40dad3e8808c9552adc0ceb63220b80475917fd314fe84bbfed3430b25a7cdaf",
                "typeString": "literal_string \"TM_CAN_NOT_FORWARD\""
              },
              "value": "TM_CAN_NOT_FORWARD"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6806,
            "name": "ERROR_ON_TRANSFER_WRONG_SENDER",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "1933:83:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6804,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1933:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f5452414e534645525f57524f4e475f53454e444552",
              "id": 6805,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1990:26:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_98099312d69732738735b3f5e61f3d09c0efb428ca1ff01f9f87228005190af6",
                "typeString": "literal_string \"TM_TRANSFER_WRONG_SENDER\""
              },
              "value": "TM_TRANSFER_WRONG_SENDER"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 6809,
            "name": "ERROR_PROXY_PAYMENT_WRONG_SENDER",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2022:90:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6807,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "2022:6:11",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "544d5f50524f58595f5041594d454e545f57524f4e475f53454e444552",
              "id": 6808,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2081:31:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_76e948c6176a0396c703a3a245eba7e3c22508ebf35bbab992f2014240286b85",
                "typeString": "literal_string \"TM_PROXY_PAYMENT_WRONG_SENDER\""
              },
              "value": "TM_PROXY_PAYMENT_WRONG_SENDER"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "TokenManager.TokenVesting",
            "id": 6820,
            "members": [
              {
                "constant": false,
                "id": 6811,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2149:14:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 6810,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2149:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6813,
                "name": "start",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2173:12:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 6812,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "2173:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6815,
                "name": "cliff",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2195:12:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 6814,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "2195:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6817,
                "name": "vesting",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2217:14:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 6816,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "2217:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6819,
                "name": "revokable",
                "nodeType": "VariableDeclaration",
                "scope": 6820,
                "src": "2241:14:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 6818,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2241:4:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "TokenVesting",
            "nodeType": "StructDefinition",
            "scope": 7603,
            "src": "2119:143:11",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6822,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2268:24:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
              "typeString": "contract MiniMeToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 6821,
              "name": "MiniMeToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6683,
              "src": "2268:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                "typeString": "contract MiniMeToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6824,
            "name": "maxAccountTokens",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2298:31:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 6823,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2298:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6830,
            "name": "vestings",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2449:72:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
              "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting))"
            },
            "typeName": {
              "id": 6829,
              "keyType": {
                "id": 6825,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2458:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2449:54:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting))"
              },
              "valueType": {
                "id": 6828,
                "keyType": {
                  "id": 6826,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2478:7:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "2469:33:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                  "typeString": "mapping(uint256 => struct TokenManager.TokenVesting)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 6827,
                  "name": "TokenVesting",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6820,
                  "src": "2489:12:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                    "typeString": "struct TokenManager.TokenVesting"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 6834,
            "name": "vestingsLengths",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2527:51:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 6833,
              "keyType": {
                "id": 6831,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2536:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2527:28:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 6832,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2547:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6838,
            "name": "everHeld",
            "nodeType": "VariableDeclaration",
            "scope": 7603,
            "src": "2584:41:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 6837,
              "keyType": {
                "id": 6835,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2593:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2584:25:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 6836,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2604:4:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6846,
            "name": "NewVesting",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6840,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6846,
                  "src": "2750:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2750:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6842,
                  "indexed": false,
                  "name": "vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6846,
                  "src": "2776:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6841,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2776:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6844,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6846,
                  "src": "2795:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6843,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2795:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2749:61:11"
            },
            "src": "2733:78:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6854,
            "name": "RevokeVesting",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6853,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6848,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6854,
                  "src": "2836:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6847,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2836:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6850,
                  "indexed": false,
                  "name": "vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6854,
                  "src": "2862:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6849,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2862:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6852,
                  "indexed": false,
                  "name": "nonVestedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6854,
                  "src": "2881:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6851,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2881:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2835:70:11"
            },
            "src": "2816:90:11"
          },
          {
            "body": {
              "id": 6870,
              "nodeType": "Block",
              "src": "2972:197:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6861,
                          "name": "_vestingId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6858,
                          "src": "3095:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6862,
                            "name": "vestingsLengths",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6834,
                            "src": "3108:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 6864,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6863,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6856,
                            "src": "3124:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3108:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3095:37:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6866,
                        "name": "ERROR_NO_VESTING",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6776,
                        "src": "3134:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6860,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3087:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3087:64:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6868,
                  "nodeType": "ExpressionStatement",
                  "src": "3087:64:11"
                },
                {
                  "id": 6869,
                  "nodeType": "PlaceholderStatement",
                  "src": "3161:1:11"
                }
              ]
            },
            "documentation": null,
            "id": 6871,
            "name": "vestingExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 6859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6856,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 6871,
                  "src": "2935:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6855,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2935:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6858,
                  "name": "_vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6871,
                  "src": "2952:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2952:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2934:37:11"
            },
            "src": "2912:257:11",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6925,
              "nodeType": "Block",
              "src": "3907:338:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6882,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "3917:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 6883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3917:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6884,
                  "nodeType": "ExpressionStatement",
                  "src": "3917:13:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6886,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6873,
                              "src": "3949:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            },
                            "id": 6887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "controller",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5633,
                            "src": "3949:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 6888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3949:19:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6890,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15292,
                              "src": "3980:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TokenManager_$7603",
                                "typeString": "contract TokenManager"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_TokenManager_$7603",
                                "typeString": "contract TokenManager"
                              }
                            ],
                            "id": 6889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3972:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 6891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3972:13:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3949:36:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6893,
                        "name": "ERROR_TOKEN_CONTROLLER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6779,
                        "src": "3987:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6885,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3941:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6894,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3941:69:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6895,
                  "nodeType": "ExpressionStatement",
                  "src": "3941:69:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6896,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6822,
                      "src": "4021:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6897,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6873,
                      "src": "4029:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "4021:14:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 6899,
                  "nodeType": "ExpressionStatement",
                  "src": "4021:14:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6900,
                      "name": "maxAccountTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6824,
                      "src": "4045:16:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6901,
                          "name": "_maxAccountTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6877,
                          "src": "4064:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4085:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4064:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "id": 6908,
                        "name": "_maxAccountTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6877,
                        "src": "4103:17:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6909,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "4064:56:11",
                      "trueExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "4097:2:11",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 6905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4098:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_-1_by_1",
                              "typeString": "int_const -1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_-1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 6904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4089:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 6907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4089:11:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4045:75:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6911,
                  "nodeType": "ExpressionStatement",
                  "src": "4045:75:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 6916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 6912,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6822,
                          "src": "4135:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        },
                        "id": 6913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transfersEnabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5705,
                        "src": "4135:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                          "typeString": "function () view external returns (bool)"
                        }
                      },
                      "id": 6914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4135:24:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 6915,
                      "name": "_transferable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6875,
                      "src": "4163:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4135:41:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6924,
                  "nodeType": "IfStatement",
                  "src": "4131:108:11",
                  "trueBody": {
                    "id": 6923,
                    "nodeType": "Block",
                    "src": "4178:61:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6920,
                              "name": "_transferable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6875,
                              "src": "4214:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6917,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "4192:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            },
                            "id": 6919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "enableTransfers",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6373,
                            "src": "4192:21:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                              "typeString": "function (bool) external"
                            }
                          },
                          "id": 6921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4192:36:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6922,
                        "nodeType": "ExpressionStatement",
                        "src": "4192:36:11"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Initialize Token Manager for `_token.symbol(): string`, whose tokens are `transferable ? 'not' : ''` transferable`_maxAccountTokens > 0 ? ' and limited to a maximum of ' + @tokenAmount(_token, _maxAccountTokens, false) + ' per account' : ''`\n@param _token MiniMeToken address for the managed token (Token Manager instance must be already set as the token controller)\n@param _transferable whether the token can be transferred by holders\n@param _maxAccountTokens Maximum amount of tokens an account can have (0 for infinite tokens)",
            "id": 6926,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 6880,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6879,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "3894:8:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3894:8:11"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6873,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 6926,
                  "src": "3781:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6872,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6683,
                    "src": "3781:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6875,
                  "name": "_transferable",
                  "nodeType": "VariableDeclaration",
                  "scope": 6926,
                  "src": "3809:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6874,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3809:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6877,
                  "name": "_maxAccountTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 6926,
                  "src": "3837:25:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6876,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3837:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3771:97:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6881,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3907:0:11"
            },
            "scope": 7603,
            "src": "3752:493:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6953,
              "nodeType": "Block",
              "src": "4564:147:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6942,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6928,
                            "src": "4608:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6943,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6930,
                            "src": "4619:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6941,
                          "name": "_isBalanceIncreaseAllowed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7413,
                          "src": "4582:25:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 6944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4582:45:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6945,
                        "name": "ERROR_MINT_BALANCE_INCREASE_NOT_ALLOWED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6782,
                        "src": "4629:39:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6940,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4574:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4574:95:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6947,
                  "nodeType": "ExpressionStatement",
                  "src": "4574:95:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6949,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6928,
                        "src": "4685:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6950,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6930,
                        "src": "4696:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6948,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7602,
                      "src": "4679:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4679:25:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6952,
                  "nodeType": "ExpressionStatement",
                  "src": "4679:25:11"
                }
              ]
            },
            "documentation": "@notice Mint `@tokenAmount(self.token(): address, _amount, false)` tokens for `_receiver`\n@param _receiver The address receiving the tokens\n@param _amount Number of tokens minted",
            "id": 6954,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6933,
                    "name": "MINT_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6750,
                    "src": "4528:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6935,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6928,
                        "src": "4543:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6936,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6930,
                        "src": "4554:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6934,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "4539:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 6937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4539:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 6938,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6932,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "4522:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4522:41:11"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6928,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6954,
                  "src": "4477:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6927,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4477:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6930,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6954,
                  "src": "4496:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6929,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4496:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4476:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6939,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4564:0:11"
            },
            "scope": 7603,
            "src": "4463:248:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6972,
              "nodeType": "Block",
              "src": "4952:46:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6967,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "4976:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          ],
                          "id": 6966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4968:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 6968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4968:13:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6969,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6956,
                        "src": "4983:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6965,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7602,
                      "src": "4962:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4962:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6971,
                  "nodeType": "ExpressionStatement",
                  "src": "4962:29:11"
                }
              ]
            },
            "documentation": "@notice Mint `@tokenAmount(self.token(): address, _amount, false)` tokens for the Token Manager\n@param _amount Number of tokens minted",
            "id": 6973,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6959,
                    "name": "ISSUE_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6755,
                    "src": "4926:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6961,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6956,
                        "src": "4942:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6960,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9404,
                      "src": "4938:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 6962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4938:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 6963,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6958,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "4920:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4920:31:11"
              }
            ],
            "name": "issue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6957,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6956,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6973,
                  "src": "4894:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6955,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4894:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4893:17:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6964,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4952:0:11"
            },
            "scope": 7603,
            "src": "4879:119:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6992,
              "nodeType": "Block",
              "src": "5361:44:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6988,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6975,
                        "src": "5379:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6989,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6977,
                        "src": "5390:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6987,
                      "name": "_assign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7587,
                      "src": "5371:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5371:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6991,
                  "nodeType": "ExpressionStatement",
                  "src": "5371:27:11"
                }
              ]
            },
            "documentation": "@notice Assign `@tokenAmount(self.token(): address, _amount, false)` tokens to `_receiver` from the Token Manager's holdings\n@param _receiver The address receiving the tokens\n@param _amount Number of tokens transferred",
            "id": 6993,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6980,
                    "name": "ASSIGN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6760,
                    "src": "5323:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6982,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6975,
                        "src": "5340:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6983,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6977,
                        "src": "5351:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6981,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "5336:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 6984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 6985,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6979,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "5317:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5317:43:11"
              }
            ],
            "name": "assign",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6975,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 6993,
                  "src": "5272:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6974,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5272:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6977,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 6993,
                  "src": "5291:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5291:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5271:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 6986,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5361:0:11"
            },
            "scope": 7603,
            "src": "5256:149:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7014,
              "nodeType": "Block",
              "src": "5720:133:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7010,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6995,
                        "src": "5829:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7011,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6997,
                        "src": "5838:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7007,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6822,
                        "src": "5809:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 7009,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "destroyTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6361,
                      "src": "5809:19:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 7012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5809:37:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7013,
                  "nodeType": "ExpressionStatement",
                  "src": "5809:37:11"
                }
              ]
            },
            "documentation": "@notice Burn `@tokenAmount(self.token(): address, _amount, false)` tokens from `_holder`\n@param _holder Holder of tokens being burned\n@param _amount Number of tokens being burned",
            "id": 7015,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7000,
                    "name": "BURN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6770,
                    "src": "5686:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7002,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6995,
                        "src": "5701:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7003,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6997,
                        "src": "5710:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7001,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "5697:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5697:21:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7005,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6999,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "5680:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5680:39:11"
              }
            ],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6998,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6995,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7015,
                  "src": "5637:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6994,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5637:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6997,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7015,
                  "src": "5654:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6996,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5654:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5636:34:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7006,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5720:0:11"
            },
            "scope": 7603,
            "src": "5623:230:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7093,
              "nodeType": "Block",
              "src": "6879:537:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7040,
                            "name": "vestingsLengths",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6834,
                            "src": "6897:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 7042,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7041,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7017,
                            "src": "6913:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6897:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7043,
                          "name": "MAX_VESTINGS_PER_ADDRESS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6773,
                          "src": "6926:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6897:53:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7045,
                        "name": "ERROR_TOO_MANY_VESTINGS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6788,
                        "src": "6952:23:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7039,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "6889:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6889:87:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7047,
                  "nodeType": "ExpressionStatement",
                  "src": "6889:87:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 7051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7049,
                            "name": "_start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7021,
                            "src": "6995:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7050,
                            "name": "_cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7023,
                            "src": "7005:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6995:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 7054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7052,
                            "name": "_cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7023,
                            "src": "7015:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7053,
                            "name": "_vested",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7025,
                            "src": "7025:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "7015:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6995:37:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7056,
                        "name": "ERROR_WRONG_CLIFF_DATE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6791,
                        "src": "7034:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7048,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "6987:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6987:70:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7058,
                  "nodeType": "ExpressionStatement",
                  "src": "6987:70:11"
                },
                {
                  "assignments": [
                    7060
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7060,
                      "name": "vestingId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7094,
                      "src": "7068:17:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7059,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7068:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7065,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "7088:28:11",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7061,
                        "name": "vestingsLengths",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6834,
                        "src": "7088:15:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 7063,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7062,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "7104:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7088:26:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7068:48:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7066,
                          "name": "vestings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6830,
                          "src": "7126:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                            "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                          }
                        },
                        "id": 7069,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7067,
                          "name": "_receiver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7017,
                          "src": "7135:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7126:19:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                          "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                        }
                      },
                      "id": 7070,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7068,
                        "name": "vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7060,
                        "src": "7146:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7126:30:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                        "typeString": "struct TokenManager.TokenVesting storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7072,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7019,
                          "src": "7185:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7073,
                          "name": "_start",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7021,
                          "src": "7206:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7074,
                          "name": "_cliff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7023,
                          "src": "7226:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7075,
                          "name": "_vested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7025,
                          "src": "7246:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7076,
                          "name": "_revokable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7027,
                          "src": "7267:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 7071,
                        "name": "TokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6820,
                        "src": "7159:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_TokenVesting_$6820_storage_ptr_$",
                          "typeString": "type(struct TokenManager.TokenVesting storage pointer)"
                        }
                      },
                      "id": 7077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7159:128:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_memory",
                        "typeString": "struct TokenManager.TokenVesting memory"
                      }
                    },
                    "src": "7126:161:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                      "typeString": "struct TokenManager.TokenVesting storage ref"
                    }
                  },
                  "id": 7079,
                  "nodeType": "ExpressionStatement",
                  "src": "7126:161:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7081,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "7306:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7082,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7019,
                        "src": "7317:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7080,
                      "name": "_assign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7587,
                      "src": "7298:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 7083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7298:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7084,
                  "nodeType": "ExpressionStatement",
                  "src": "7298:27:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7086,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "7352:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7087,
                        "name": "vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7060,
                        "src": "7363:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7088,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7019,
                        "src": "7374:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7085,
                      "name": "NewVesting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6846,
                      "src": "7341:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 7089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7341:41:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7090,
                  "nodeType": "EmitStatement",
                  "src": "7336:46:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7091,
                    "name": "vestingId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7060,
                    "src": "7400:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7038,
                  "id": 7092,
                  "nodeType": "Return",
                  "src": "7393:16:11"
                }
              ]
            },
            "documentation": "@notice Assign `@tokenAmount(self.token(): address, _amount, false)` tokens to `_receiver` from the Token Manager's holdings with a `_revokable : 'revokable' : ''` vesting starting at `@formatDate(_start)`, cliff at `@formatDate(_cliff)` (first portion of tokens transferable), and completed vesting at `@formatDate(_vested)` (all tokens transferable)\n@param _receiver The address receiving the tokens\n@param _amount Number of tokens vested\n@param _start Date the vesting calculations start\n@param _cliff Date when the initial portion of tokens are transferable\n@param _vested Date when all tokens are transferable\n@param _revokable Whether the vesting can be revoked by the Token Manager",
            "id": 7094,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7030,
                    "name": "ASSIGN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6760,
                    "src": "6811:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7032,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7017,
                        "src": "6828:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7033,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7019,
                        "src": "6839:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7031,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9302,
                      "src": "6824:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6824:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7035,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7029,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "6805:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6805:43:11"
              }
            ],
            "name": "assignVested",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7017,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6636:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7016,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6636:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7019,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6663:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7018,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6663:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7021,
                  "name": "_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6688:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7020,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "6688:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7023,
                  "name": "_cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6711:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7022,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "6711:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7025,
                  "name": "_vested",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6734:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7024,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "6734:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7027,
                  "name": "_revokable",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6758:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7026,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6758:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6626:153:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7038,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7037,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7094,
                  "src": "6866:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7036,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6866:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6865:9:11"
            },
            "scope": 7603,
            "src": "6605:811:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7165,
              "nodeType": "Block",
              "src": "7820:746:11",
              "statements": [
                {
                  "assignments": [
                    7112
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7112,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 7166,
                      "src": "7830:22:11",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                        "typeString": "struct TokenManager.TokenVesting"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7111,
                        "name": "TokenVesting",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6820,
                        "src": "7830:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7118,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7113,
                        "name": "vestings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6830,
                        "src": "7855:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                        }
                      },
                      "id": 7115,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7114,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7096,
                        "src": "7864:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7855:17:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                        "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                      }
                    },
                    "id": 7117,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7116,
                      "name": "_vestingId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7098,
                      "src": "7873:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7855:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                      "typeString": "struct TokenManager.TokenVesting storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7830:54:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7120,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "7902:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7121,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "revokable",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6819,
                        "src": "7902:11:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7122,
                        "name": "ERROR_VESTING_NOT_REVOKABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6794,
                        "src": "7915:27:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7119,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "7894:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7894:49:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7124,
                  "nodeType": "ExpressionStatement",
                  "src": "7894:49:11"
                },
                {
                  "assignments": [
                    7126
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7126,
                      "name": "nonVested",
                      "nodeType": "VariableDeclaration",
                      "scope": 7166,
                      "src": "7954:17:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7125,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7954:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7139,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7128,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8013:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7129,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6811,
                        "src": "8013:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7130,
                          "name": "getTimestamp64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11199,
                          "src": "8035:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 7131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8035:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7132,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8065:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7133,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "start",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6813,
                        "src": "8065:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7134,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8086:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7135,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "cliff",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6815,
                        "src": "8086:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7136,
                          "name": "v",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7112,
                          "src": "8107:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                            "typeString": "struct TokenManager.TokenVesting storage pointer"
                          }
                        },
                        "id": 7137,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vesting",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6817,
                        "src": "8107:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 7127,
                      "name": "_calculateNonVestedTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7561,
                      "src": "7974:25:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7974:152:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7954:172:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8225:36:11",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7140,
                          "name": "vestings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6830,
                          "src": "8232:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                            "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                          }
                        },
                        "id": 7142,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7141,
                          "name": "_holder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7096,
                          "src": "8241:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8232:17:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                          "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                        }
                      },
                      "id": 7144,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7143,
                        "name": "_vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7098,
                        "src": "8250:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8232:29:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                        "typeString": "struct TokenManager.TokenVesting storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7146,
                  "nodeType": "ExpressionStatement",
                  "src": "8225:36:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7150,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7096,
                            "src": "8426:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7152,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15292,
                                "src": "8443:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_TokenManager_$7603",
                                  "typeString": "contract TokenManager"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_TokenManager_$7603",
                                  "typeString": "contract TokenManager"
                                }
                              ],
                              "id": 7151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8435:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 7153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8435:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7154,
                            "name": "nonVested",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7126,
                            "src": "8450:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7148,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "8407:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5827,
                          "src": "8407:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 7155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8407:53:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7156,
                        "name": "ERROR_REVOKE_TRANSFER_FROM_REVERTED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6797,
                        "src": "8462:35:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7147,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "8399:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8399:99:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7158,
                  "nodeType": "ExpressionStatement",
                  "src": "8399:99:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7160,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7096,
                        "src": "8528:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7161,
                        "name": "_vestingId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7098,
                        "src": "8537:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7162,
                        "name": "nonVested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7126,
                        "src": "8549:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7159,
                      "name": "RevokeVesting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6854,
                      "src": "8514:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 7163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8514:45:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7164,
                  "nodeType": "EmitStatement",
                  "src": "8509:50:11"
                }
              ]
            },
            "documentation": "@notice Revoke vesting #`_vestingId` from `_holder`, returning unvested tokens to the Token Manager\n@param _holder Address whose vesting to revoke\n@param _vestingId Numeric id of the vesting",
            "id": 7166,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7101,
                    "name": "REVOKE_VESTINGS_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6765,
                    "src": "7737:20:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7103,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7096,
                        "src": "7763:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7102,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9217,
                      "src": "7759:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7759:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7105,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7100,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "7731:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7731:41:11"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7107,
                    "name": "_holder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7096,
                    "src": "7795:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 7108,
                    "name": "_vestingId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7098,
                    "src": "7804:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 7109,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7106,
                  "name": "vestingExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6871,
                  "src": "7781:13:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$",
                    "typeString": "modifier (address,uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7781:34:11"
              }
            ],
            "name": "revokeVesting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7099,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7096,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7166,
                  "src": "7669:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7095,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7669:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7098,
                  "name": "_vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7166,
                  "src": "7686:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7097,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7686:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7668:37:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7110,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7820:0:11"
            },
            "scope": 7603,
            "src": "7646:920:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7211,
              "nodeType": "Block",
              "src": "8809:464:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7173,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15153,
                              "src": "8838:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8838:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7175,
                            "name": "_evmScript",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7168,
                            "src": "8850:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 7172,
                          "name": "canForward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            7240
                          ],
                          "referencedDeclaration": 7240,
                          "src": "8827:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 7176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8827:34:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7177,
                        "name": "ERROR_CAN_NOT_FORWARD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6803,
                        "src": "8863:21:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7171,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "8819:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8819:66:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7179,
                  "nodeType": "ExpressionStatement",
                  "src": "8819:66:11"
                },
                {
                  "assignments": [
                    7181
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7181,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 7212,
                      "src": "8895:18:11",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7180,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "8895:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7186,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8926:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 7183,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8916:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 7182,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "8920:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 7185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8916:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8895:33:11"
                },
                {
                  "assignments": [
                    7190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7190,
                      "name": "blacklist",
                      "nodeType": "VariableDeclaration",
                      "scope": 7212,
                      "src": "9132:26:11",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9132:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7189,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9132:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7196,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 7194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9175:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 7193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "9161:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9165:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7192,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9165:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 7195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9161:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9132:45:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7197,
                        "name": "blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7190,
                        "src": "9187:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 7199,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9197:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9187:12:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7201,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6822,
                          "src": "9210:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 7200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9202:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9202:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9187:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 7204,
                  "nodeType": "ExpressionStatement",
                  "src": "9187:29:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7206,
                        "name": "_evmScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7168,
                        "src": "9237:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7207,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7181,
                        "src": "9249:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7208,
                        "name": "blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7190,
                        "src": "9256:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 7205,
                      "name": "runScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11788,
                      "src": "9227:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)"
                      }
                    },
                    "id": 7209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9227:39:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 7210,
                  "nodeType": "ExpressionStatement",
                  "src": "9227:39:11"
                }
              ]
            },
            "documentation": "@notice Execute desired action as a token holder\n@dev IForwarder interface conformance. Forwards any token holder action.\n@param _evmScript Script being executed",
            "id": 7212,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "forward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7169,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7168,
                  "name": "_evmScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 7212,
                  "src": "8784:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7167,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8784:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8783:18:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7170,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8809:0:11"
            },
            "scope": 7603,
            "src": "8767:506:11",
            "stateMutability": "nonpayable",
            "superFunction": 10683,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7219,
              "nodeType": "Block",
              "src": "9329:28:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9346:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7216,
                  "id": 7218,
                  "nodeType": "Return",
                  "src": "9339:11:11"
                }
              ]
            },
            "documentation": null,
            "id": 7220,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isForwarder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7213,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9299:2:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7215,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7220,
                  "src": "9323:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7214,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9323:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9322:6:11"
            },
            "scope": 7603,
            "src": "9279:78:11",
            "stateMutability": "pure",
            "superFunction": 10669,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7239,
              "nodeType": "Block",
              "src": "9434:72:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 7229,
                        "name": "hasInitialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10782,
                        "src": "9451:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                          "typeString": "function () view returns (bool)"
                        }
                      },
                      "id": 7230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9451:16:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7233,
                            "name": "_sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7222,
                            "src": "9487:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7231,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "9471:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5954,
                          "src": "9471:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 7234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9471:24:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9498:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "9471:28:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9451:48:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7228,
                  "id": 7238,
                  "nodeType": "Return",
                  "src": "9444:55:11"
                }
              ]
            },
            "documentation": null,
            "id": 7240,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canForward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7222,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 7240,
                  "src": "9383:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9383:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7224,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7240,
                  "src": "9400:5:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7223,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9400:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9382:24:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7227,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7240,
                  "src": "9428:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7226,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9428:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9427:6:11"
            },
            "scope": 7603,
            "src": "9363:143:11",
            "stateMutability": "view",
            "superFunction": 10678,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7294,
              "nodeType": "Block",
              "src": "9835:279:11",
              "statements": [
                {
                  "assignments": [
                    7262
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7262,
                      "name": "tokenVesting",
                      "nodeType": "VariableDeclaration",
                      "scope": 7295,
                      "src": "9845:33:11",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                        "typeString": "struct TokenManager.TokenVesting"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7261,
                        "name": "TokenVesting",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6820,
                        "src": "9845:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7268,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7263,
                        "name": "vestings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6830,
                        "src": "9881:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                        }
                      },
                      "id": 7265,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7264,
                        "name": "_recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7242,
                        "src": "9890:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9881:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                        "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                      }
                    },
                    "id": 7267,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7266,
                      "name": "_vestingId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7244,
                      "src": "9902:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9881:32:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                      "typeString": "struct TokenManager.TokenVesting storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9845:68:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7269,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7251,
                      "src": "9923:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7270,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "9932:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7271,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6811,
                      "src": "9932:19:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9923:28:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7273,
                  "nodeType": "ExpressionStatement",
                  "src": "9923:28:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7274,
                      "name": "start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7253,
                      "src": "9961:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7275,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "9969:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7276,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "start",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6813,
                      "src": "9969:18:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9961:26:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 7278,
                  "nodeType": "ExpressionStatement",
                  "src": "9961:26:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7279,
                      "name": "cliff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7255,
                      "src": "9997:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7280,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "10005:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7281,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "cliff",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6815,
                      "src": "10005:18:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9997:26:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 7283,
                  "nodeType": "ExpressionStatement",
                  "src": "9997:26:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7284,
                      "name": "vesting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7257,
                      "src": "10033:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7285,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "10043:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7286,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "vesting",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6817,
                      "src": "10043:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10033:30:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 7288,
                  "nodeType": "ExpressionStatement",
                  "src": "10033:30:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7289,
                      "name": "revokable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7259,
                      "src": "10073:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7290,
                        "name": "tokenVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7262,
                        "src": "10085:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                          "typeString": "struct TokenManager.TokenVesting storage pointer"
                        }
                      },
                      "id": 7291,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "revokable",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6819,
                      "src": "10085:22:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10073:34:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7293,
                  "nodeType": "ExpressionStatement",
                  "src": "10073:34:11"
                }
              ]
            },
            "documentation": null,
            "id": 7295,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7247,
                    "name": "_recipient",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7242,
                    "src": "9644:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 7248,
                    "name": "_vestingId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7244,
                    "src": "9656:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 7249,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7246,
                  "name": "vestingExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6871,
                  "src": "9630:13:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$_t_uint256_$",
                    "typeString": "modifier (address,uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9630:37:11"
              }
            ],
            "name": "getVesting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7242,
                  "name": "_recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9541:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7241,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9541:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7244,
                  "name": "_vestingId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9569:18:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7243,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9569:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9531:62:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7251,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9698:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9698:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7253,
                  "name": "start",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9726:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7252,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9726:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7255,
                  "name": "cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9752:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7254,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9752:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7257,
                  "name": "vesting",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9778:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7256,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9778:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7259,
                  "name": "revokable",
                  "nodeType": "VariableDeclaration",
                  "scope": 7295,
                  "src": "9806:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7258,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9806:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9684:146:11"
            },
            "scope": 7603,
            "src": "9512:602:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7358,
              "nodeType": "Block",
              "src": "10608:436:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7309,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15153,
                            "src": "10626:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10626:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7312,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "10648:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            ],
                            "id": 7311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10640:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10640:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10626:28:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7315,
                        "name": "ERROR_ON_TRANSFER_WRONG_SENDER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6806,
                        "src": "10656:30:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7308,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "10618:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10618:69:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7317,
                  "nodeType": "ExpressionStatement",
                  "src": "10618:69:11"
                },
                {
                  "assignments": [
                    7319
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7319,
                      "name": "includesTokenManager",
                      "nodeType": "VariableDeclaration",
                      "scope": 7359,
                      "src": "10698:25:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7318,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10698:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7331,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 7324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7320,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7297,
                        "src": "10726:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7322,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "10743:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          ],
                          "id": 7321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10735:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 7323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10735:13:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "10726:22:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 7329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7325,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7299,
                        "src": "10752:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7327,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "10767:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          ],
                          "id": 7326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10759:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 7328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10759:13:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "10752:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10726:46:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10698:74:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 7333,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10787:21:11",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 7332,
                      "name": "includesTokenManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7319,
                      "src": "10788:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7355,
                  "nodeType": "IfStatement",
                  "src": "10783:233:11",
                  "trueBody": {
                    "id": 7354,
                    "nodeType": "Block",
                    "src": "10810:206:11",
                    "statements": [
                      {
                        "assignments": [
                          7335
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7335,
                            "name": "toCanReceive",
                            "nodeType": "VariableDeclaration",
                            "scope": 7359,
                            "src": "10824:17:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7334,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10824:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7340,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7337,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7299,
                              "src": "10870:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7338,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7301,
                              "src": "10875:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7336,
                            "name": "_isBalanceIncreaseAllowed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7413,
                            "src": "10844:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) view returns (bool)"
                            }
                          },
                          "id": 7339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10844:39:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10824:59:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "10901:13:11",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 7341,
                              "name": "toCanReceive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7335,
                              "src": "10902:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7344,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7297,
                                  "src": "10938:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7345,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15155,
                                  "src": "10945:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7343,
                                "name": "transferableBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7497,
                                "src": "10918:19:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256) view returns (uint256)"
                                }
                              },
                              "id": 7346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10918:31:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7347,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7301,
                              "src": "10952:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10918:41:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10901:58:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7353,
                        "nodeType": "IfStatement",
                        "src": "10897:109:11",
                        "trueBody": {
                          "id": 7352,
                          "nodeType": "Block",
                          "src": "10961:45:11",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 7350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10986:5:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 7307,
                              "id": 7351,
                              "nodeType": "Return",
                              "src": "10979:12:11"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11033:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7307,
                  "id": 7357,
                  "nodeType": "Return",
                  "src": "11026:11:11"
                }
              ]
            },
            "documentation": null,
            "id": 7359,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7304,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7303,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "10579:13:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10579:13:11"
              }
            ],
            "name": "onTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7297,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10530:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7296,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10530:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7299,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10545:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7298,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10545:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7301,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10558:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7300,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10558:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10529:42:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7306,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7359,
                  "src": "10602:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7305,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10602:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10601:6:11"
            },
            "scope": 7603,
            "src": "10510:534:11",
            "stateMutability": "nonpayable",
            "superFunction": 5605,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7378,
              "nodeType": "Block",
              "src": "11262:361:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7367,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15153,
                            "src": "11531:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11531:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7370,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "11553:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            ],
                            "id": 7369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11545:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11545:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11531:28:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7373,
                        "name": "ERROR_PROXY_PAYMENT_WRONG_SENDER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6809,
                        "src": "11561:32:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7366,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "11523:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11523:71:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7375,
                  "nodeType": "ExpressionStatement",
                  "src": "11523:71:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 7376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11611:5:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 7365,
                  "id": 7377,
                  "nodeType": "Return",
                  "src": "11604:12:11"
                }
              ]
            },
            "documentation": "@notice Called when ether is sent to the MiniMe Token contract\n@return True if the ether is accepted, false for it to throw",
            "id": 7379,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "proxyPayment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7361,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7379,
                  "src": "11223:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7360,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11223:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11222:9:11"
            },
            "payable": true,
            "returnParameters": {
              "id": 7365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7364,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7379,
                  "src": "11256:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7363,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11256:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11255:6:11"
            },
            "scope": 7603,
            "src": "11201:422:11",
            "stateMutability": "payable",
            "superFunction": 5594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7392,
              "nodeType": "Block",
              "src": "11876:28:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11893:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7389,
                  "id": 7391,
                  "nodeType": "Return",
                  "src": "11886:11:11"
                }
              ]
            },
            "documentation": "@dev Notifies the controller about an approval allowing the controller to react if desired\n@return False if the controller does not authorize the approval",
            "id": 7393,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "onApprove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7381,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11830:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11830:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7383,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11839:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11839:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7385,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11848:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7384,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11848:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11829:24:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7388,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7393,
                  "src": "11870:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7387,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11870:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11869:6:11"
            },
            "scope": 7603,
            "src": "11811:93:11",
            "stateMutability": "nonpayable",
            "superFunction": 5616,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7412,
              "nodeType": "Block",
              "src": "12004:80:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7407,
                          "name": "_inc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7397,
                          "src": "12052:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7404,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7395,
                              "src": "12037:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7402,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "12021:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                                "typeString": "contract MiniMeToken"
                              }
                            },
                            "id": 7403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5954,
                            "src": "12021:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12021:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14042,
                        "src": "12021:30:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 7408,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12021:36:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7409,
                      "name": "maxAccountTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6824,
                      "src": "12061:16:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12021:56:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7401,
                  "id": 7411,
                  "nodeType": "Return",
                  "src": "12014:63:11"
                }
              ]
            },
            "documentation": null,
            "id": 7413,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isBalanceIncreaseAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7395,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "11945:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7394,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11945:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7397,
                  "name": "_inc",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "11964:9:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7396,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11964:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11944:30:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7400,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "11998:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7399,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11998:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11997:6:11"
            },
            "scope": 7603,
            "src": "11910:174:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7425,
              "nodeType": "Block",
              "src": "12165:57:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7421,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7415,
                        "src": "12202:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7422,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15155,
                        "src": "12211:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7420,
                      "name": "transferableBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7497,
                      "src": "12182:19:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view returns (uint256)"
                      }
                    },
                    "id": 7423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12182:33:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7419,
                  "id": 7424,
                  "nodeType": "Return",
                  "src": "12175:40:11"
                }
              ]
            },
            "documentation": null,
            "id": 7426,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "spendableBalanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7415,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7426,
                  "src": "12118:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7414,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12118:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12117:17:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7418,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7426,
                  "src": "12156:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7417,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12156:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12155:9:11"
            },
            "scope": 7603,
            "src": "12090:132:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7496,
              "nodeType": "Block",
              "src": "12319:590:11",
              "statements": [
                {
                  "assignments": [
                    7436
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7436,
                      "name": "vestingsCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "12329:21:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7435,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12329:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7440,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7437,
                      "name": "vestingsLengths",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6834,
                      "src": "12353:15:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 7439,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7438,
                      "name": "_holder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7428,
                      "src": "12369:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12353:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12329:48:11"
                },
                {
                  "assignments": [
                    7442
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7442,
                      "name": "totalNonTransferable",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "12387:28:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7441,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12387:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7444,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 7443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12418:1:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12387:32:11"
                },
                {
                  "body": {
                    "id": 7486,
                    "nodeType": "Block",
                    "src": "12474:361:11",
                    "statements": [
                      {
                        "assignments": [
                          7456
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7456,
                            "name": "v",
                            "nodeType": "VariableDeclaration",
                            "scope": 7497,
                            "src": "12488:22:11",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                              "typeString": "struct TokenManager.TokenVesting"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7455,
                              "name": "TokenVesting",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6820,
                              "src": "12488:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                "typeString": "struct TokenManager.TokenVesting"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7462,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7457,
                              "name": "vestings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6830,
                              "src": "12513:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct TokenManager.TokenVesting storage ref))"
                              }
                            },
                            "id": 7459,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7458,
                              "name": "_holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7428,
                              "src": "12522:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12513:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenVesting_$6820_storage_$",
                              "typeString": "mapping(uint256 => struct TokenManager.TokenVesting storage ref)"
                            }
                          },
                          "id": 7461,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7460,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7446,
                            "src": "12531:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12513:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenVesting_$6820_storage",
                            "typeString": "struct TokenManager.TokenVesting storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12488:45:11"
                      },
                      {
                        "assignments": [
                          7464
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7464,
                            "name": "nonTransferable",
                            "nodeType": "VariableDeclaration",
                            "scope": 7497,
                            "src": "12547:20:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7463,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12547:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7478,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7466,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12613:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7467,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6811,
                              "src": "12613:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7468,
                                  "name": "_time",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7430,
                                  "src": "12639:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toUint64",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11230,
                                "src": "12639:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint64)"
                                }
                              },
                              "id": 7470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12639:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7471,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12673:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7472,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "start",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6813,
                              "src": "12673:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7473,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12698:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7474,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cliff",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6815,
                              "src": "12698:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7475,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7456,
                                "src": "12723:1:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenVesting_$6820_storage_ptr",
                                  "typeString": "struct TokenManager.TokenVesting storage pointer"
                                }
                              },
                              "id": 7476,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6817,
                              "src": "12723:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 7465,
                            "name": "_calculateNonVestedTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7561,
                            "src": "12570:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12570:176:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12547:199:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7479,
                            "name": "totalNonTransferable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7442,
                            "src": "12760:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7482,
                                "name": "nonTransferable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7464,
                                "src": "12808:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7480,
                                "name": "totalNonTransferable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7442,
                                "src": "12783:20:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14042,
                              "src": "12783:24:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12783:41:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12760:64:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7485,
                        "nodeType": "ExpressionStatement",
                        "src": "12760:64:11"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7449,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7446,
                      "src": "12450:1:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7450,
                      "name": "vestingsCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7436,
                      "src": "12454:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12450:17:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7487,
                  "initializationExpression": {
                    "assignments": [
                      7446
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7446,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 7497,
                        "src": "12435:9:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12435:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 7448,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12447:1:11",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12435:13:11"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 7453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "12469:3:11",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 7452,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7446,
                        "src": "12469:1:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7454,
                    "nodeType": "ExpressionStatement",
                    "src": "12469:3:11"
                  },
                  "nodeType": "ForStatement",
                  "src": "12430:405:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7493,
                        "name": "totalNonTransferable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7442,
                        "src": "12881:20:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7490,
                            "name": "_holder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7428,
                            "src": "12868:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7488,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "12852:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5954,
                          "src": "12852:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 7491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12852:24:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14017,
                      "src": "12852:28:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12852:50:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7434,
                  "id": 7495,
                  "nodeType": "Return",
                  "src": "12845:57:11"
                }
              ]
            },
            "documentation": null,
            "id": 7497,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "transferableBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7428,
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 7497,
                  "src": "12257:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7427,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12257:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7430,
                  "name": "_time",
                  "nodeType": "VariableDeclaration",
                  "scope": 7497,
                  "src": "12274:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7429,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12274:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12256:32:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7434,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7433,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7497,
                  "src": "12310:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7432,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12310:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12309:9:11"
            },
            "scope": 7603,
            "src": "12228:681:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7510,
              "nodeType": "Block",
              "src": "13136:48:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7504,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7499,
                      "src": "13153:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7506,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6822,
                          "src": "13171:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                            "typeString": "contract MiniMeToken"
                          }
                        ],
                        "id": 7505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13163:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13163:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13153:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7503,
                  "id": 7509,
                  "nodeType": "Return",
                  "src": "13146:31:11"
                }
              ]
            },
            "documentation": "@dev Disable recovery escape hatch for own token,\n     as the it has the concept of issuing tokens without assigning them",
            "id": 7511,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowRecoverability",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7500,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7499,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7511,
                  "src": "13093:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7498,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13093:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13092:16:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7503,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7502,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7511,
                  "src": "13130:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7501,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13130:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13129:6:11"
            },
            "scope": 7603,
            "src": "13064:120:11",
            "stateMutability": "view",
            "superFunction": 11416,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7560,
              "nodeType": "Block",
              "src": "14268:773:11",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7526,
                      "name": "time",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7515,
                      "src": "14344:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7527,
                      "name": "vested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7521,
                      "src": "14352:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14344:14:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7532,
                  "nodeType": "IfStatement",
                  "src": "14340:53:11",
                  "trueBody": {
                    "id": 7531,
                    "nodeType": "Block",
                    "src": "14360:33:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14381:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 7525,
                        "id": 7530,
                        "nodeType": "Return",
                        "src": "14374:8:11"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7533,
                      "name": "time",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7515,
                      "src": "14406:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7534,
                      "name": "cliff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7519,
                      "src": "14413:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14406:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7539,
                  "nodeType": "IfStatement",
                  "src": "14402:56:11",
                  "trueBody": {
                    "id": 7538,
                    "nodeType": "Block",
                    "src": "14420:38:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7536,
                          "name": "tokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7513,
                          "src": "14441:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7525,
                        "id": 7537,
                        "nodeType": "Return",
                        "src": "14434:13:11"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    7541
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7541,
                      "name": "vestedTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 7561,
                      "src": "14889:20:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7540,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14889:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7554,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7553,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7546,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7517,
                              "src": "14932:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7544,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7515,
                              "src": "14923:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14017,
                            "src": "14923:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14923:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 7542,
                          "name": "tokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7513,
                          "src": "14912:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13967,
                        "src": "14912:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 7548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14912:27:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7551,
                          "name": "start",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7517,
                          "src": "14953:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 7549,
                          "name": "vested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7521,
                          "src": "14942:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14017,
                        "src": "14942:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 7552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14942:17:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14912:47:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14889:70:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7557,
                        "name": "vestedTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7541,
                        "src": "15021:12:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7555,
                        "name": "tokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7513,
                        "src": "15010:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14017,
                      "src": "15010:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15010:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7525,
                  "id": 7559,
                  "nodeType": "Return",
                  "src": "15003:31:11"
                }
              ]
            },
            "documentation": "@dev Calculate amount of non-vested tokens at a specifc time\n@param tokens The total amount of tokens vested\n@param time The time at which to check\n@param start The date vesting started\n@param cliff The cliff period\n@param vested The fully vested date\n@return The amount of non-vested tokens of a specific grant\n transferableTokens\n  |                         _/--------   vestedTokens rect\n  |                       _/\n  |                     _/\n  |                   _/\n  |                 _/\n  |                /\n  |              .|\n  |            .  |\n  |          .    |\n  |        .      |\n  |      .        |\n  |    .          |\n  +===+===========+---------+----------> time\n     Start       Cliff    Vested",
            "id": 7561,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_calculateNonVestedTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7513,
                  "name": "tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14096:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7512,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14096:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7515,
                  "name": "time",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14120:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7514,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14120:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7517,
                  "name": "start",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14142:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7516,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14142:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7519,
                  "name": "cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14165:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14165:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7521,
                  "name": "vested",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14188:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7520,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14188:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14086:122:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7524,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7561,
                  "src": "14255:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7523,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14255:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14254:9:11"
            },
            "scope": 7603,
            "src": "14052:989:11",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 7586,
              "nodeType": "Block",
              "src": "15109:311:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7570,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7563,
                            "src": "15153:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7571,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7565,
                            "src": "15164:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7569,
                          "name": "_isBalanceIncreaseAllowed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7413,
                          "src": "15127:25:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 7572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15127:45:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7573,
                        "name": "ERROR_ASSIGN_BALANCE_INCREASE_NOT_ALLOWED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6785,
                        "src": "15174:41:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7568,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "15119:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15119:97:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7575,
                  "nodeType": "ExpressionStatement",
                  "src": "15119:97:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7579,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15292,
                            "src": "15350:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7580,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7563,
                            "src": "15356:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7581,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7565,
                            "src": "15367:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_TokenManager_$7603",
                              "typeString": "contract TokenManager"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7577,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "15331:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 7578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5827,
                          "src": "15331:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 7582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15331:44:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7583,
                        "name": "ERROR_ASSIGN_TRANSFER_FROM_REVERTED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6800,
                        "src": "15377:35:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "15323:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15323:90:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7585,
                  "nodeType": "ExpressionStatement",
                  "src": "15323:90:11"
                }
              ]
            },
            "documentation": null,
            "id": 7587,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_assign",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7563,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7587,
                  "src": "15064:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15064:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7565,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7587,
                  "src": "15083:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7564,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15083:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15063:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15109:0:11"
            },
            "scope": 7603,
            "src": "15047:373:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7601,
              "nodeType": "Block",
              "src": "15486:104:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7597,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7589,
                        "src": "15517:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7598,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7591,
                        "src": "15528:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7594,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6822,
                        "src": "15496:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$6683",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 7596,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "generateTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6302,
                      "src": "15496:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 7599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15496:40:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7600,
                  "nodeType": "ExpressionStatement",
                  "src": "15496:40:11"
                }
              ]
            },
            "documentation": null,
            "id": 7602,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7589,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 7602,
                  "src": "15441:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7588,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15441:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7591,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7602,
                  "src": "15460:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7590,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15460:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15440:36:11"
            },
            "payable": false,
            "returnParameters": {
              "id": 7593,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15486:0:11"
            },
            "scope": 7603,
            "src": "15426:164:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 7604,
        "src": "518:15074:11"
      }
    ],
    "src": "94:15499:11"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.734Z"
}