{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract Association",
          "name": "association",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "association",
          "type": "address"
        }
      ],
      "name": "SetAssociation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "cashier",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TokenWithdrawn",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "association",
      "outputs": [
        {
          "internalType": "contract Association",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Association",
          "name": "someAssociation",
          "type": "address"
        }
      ],
      "name": "belongsTo",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastWithdrawAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "tokensReceived",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Charter",
          "name": "charter",
          "type": "address"
        },
        {
          "internalType": "contract ERC20",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50604051610cbd380380610cbd83398101604081905261002f9161017f565b610038336100e5565b610041336100e5565b61004a81610135565b426002556040516329965a1d60e01b815230600482018190527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156100c757600080fd5b505af11580156100db573d6000803e3d6000fd5b50505050506101af565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fd644dc7fcd33e8f50b196f5d8efabdaea1758e024467b0c26ca395105c4becfb90600090a250565b60006020828403121561019157600080fd5b81516001600160a01b03811681146101a857600080fd5b9392505050565b610aff806101be6000396000f3fe60806040526004361061007e5760003560e01c80638662d3ae1161004e5780638662d3ae146101215780638da5cb5b14610151578063f2fde38b1461016f578063f940e3851461018f57600080fd5b806223de291461008a578063050d4f78146100b1578063715018a6146100e85780637e9db830146100fd57600080fd5b3661008557005b600080fd5b34801561009657600080fd5b506100af6100a53660046108fb565b5050505050505050565b005b3480156100bd57600080fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f457600080fd5b506100af6101af565b34801561010957600080fd5b5061011360025481565b6040519081526020016100df565b34801561012d57600080fd5b5061014161013c3660046109ac565b61021a565b60405190151581526020016100df565b34801561015d57600080fd5b506000546001600160a01b03166100cb565b34801561017b57600080fd5b506100af61018a3660046109ac565b6102a3565b34801561019b57600080fd5b506100af6101aa3660046109c9565b61036e565b6000546001600160a01b0316331461020e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6102186000610834565b565b6001546000906001600160a01b03838116911614801561029d57506040516321887c3d60e01b81523060048201526001600160a01b038316906321887c3d90602401602060405180830381865afa158015610279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029d9190610a02565b92915050565b6000546001600160a01b031633146102fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610205565b6001600160a01b0381166103625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610205565b61036b81610834565b50565b816103788161021a565b6103de5760405162461bcd60e51b815260206004820152603160248201527f4d656d6265723a2063616c6c6572206973206e6f742061206d656d626572206f60448201527033103a34329030b9b9b7b1b4b0ba34b7b760791b6064820152608401610205565b6001546001600160a01b031633148061046a575060015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045f9190610a24565b6001600160a01b0316145b6104c45760405162461bcd60e51b815260206004820152602560248201527f4d656d6265723a2063616c6c6572206973206e6f7420746865206173736f636960448201526430ba34b7b760d91b6064820152608401610205565b6000836001600160a01b03166354e858e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105289190610a41565b67ffffffffffffffff16600254426105409190610a81565b61054a9190610a98565b60405163acfad24960e01b81526001600160a01b03858116600483015291925060009186169063acfad24990602401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba9190610a41565b67ffffffffffffffff1690506000856001600160a01b03166372f702f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190610a24565b6001600160a01b0316634262336061064a6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190610aba565b90506000612710846106c48585610ad3565b6106ce9190610ad3565b6106d89190610a98565b6040516370a0823160e01b81523060048201529091506000906107519083906001600160a01b038a16906370a0823190602401602060405180830381865afa158015610728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074c9190610aba565b610884565b9050866001600160a01b031663a9059cbb6107746000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e59190610a02565b506040518181526001600160a01b0388169030907f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56209060200160405180910390a3505042600255505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818311156108945781610896565b825b9392505050565b6001600160a01b038116811461036b57600080fd5b60008083601f8401126108c457600080fd5b50813567ffffffffffffffff8111156108dc57600080fd5b6020830191508360208285010111156108f457600080fd5b9250929050565b60008060008060008060008060c0898b03121561091757600080fd5b88356109228161089d565b975060208901356109328161089d565b965060408901356109428161089d565b955060608901359450608089013567ffffffffffffffff8082111561096657600080fd5b6109728c838d016108b2565b909650945060a08b013591508082111561098b57600080fd5b506109988b828c016108b2565b999c989b5096995094979396929594505050565b6000602082840312156109be57600080fd5b81356108968161089d565b600080604083850312156109dc57600080fd5b82356109e78161089d565b915060208301356109f78161089d565b809150509250929050565b600060208284031215610a1457600080fd5b8151801515811461089657600080fd5b600060208284031215610a3657600080fd5b81516108968161089d565b600060208284031215610a5357600080fd5b815167ffffffffffffffff8116811461089657600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610a9357610a93610a6b565b500390565b600082610ab557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610acc57600080fd5b5051919050565b6000816000190483118215151615610aed57610aed610a6b565b50029056fea164736f6c634300080d000a",
    "sourceMap": "324:1962:12:-:0;;;915:327;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;921:32:0;719:10:9;921:18:0;:32::i;:::-;962:30:12;981:10;962:18;:30::i;:::-;1002:28;1018:11;1002:15;:28::i;:::-;1057:15;1040:14;:32;1082:153;;-1:-1:-1;;;1082:153:12;;1145:4;1082:153;;;569:34:22;;;1164::12;619:18:22;;;612:34;662:18;;;655:43;658:42:12;;1082:41;;504:18:22;;1082:153:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:327;324:1962;;2270:187:0;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:0;;;-1:-1:-1;;;;;;2378:17:0;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;2189:165:15:-;2262:12;:30;;-1:-1:-1;;;;;;2262:30:15;-1:-1:-1;;;;;2262:30:15;;;;;;;;2307:40;;;;-1:-1:-1;;2307:40:15;2189:165;:::o;14:310:22:-;104:6;157:2;145:9;136:7;132:23;128:32;125:52;;;173:1;170;163:12;125:52;199:16;;-1:-1:-1;;;;;244:31:22;;234:42;;224:70;;290:1;287;280:12;224:70;313:5;14:310;-1:-1:-1;;;14:310:22:o;329:375::-;324:1962:12;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x60806040526004361061007e5760003560e01c80638662d3ae1161004e5780638662d3ae146101215780638da5cb5b14610151578063f2fde38b1461016f578063f940e3851461018f57600080fd5b806223de291461008a578063050d4f78146100b1578063715018a6146100e85780637e9db830146100fd57600080fd5b3661008557005b600080fd5b34801561009657600080fd5b506100af6100a53660046108fb565b5050505050505050565b005b3480156100bd57600080fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f457600080fd5b506100af6101af565b34801561010957600080fd5b5061011360025481565b6040519081526020016100df565b34801561012d57600080fd5b5061014161013c3660046109ac565b61021a565b60405190151581526020016100df565b34801561015d57600080fd5b506000546001600160a01b03166100cb565b34801561017b57600080fd5b506100af61018a3660046109ac565b6102a3565b34801561019b57600080fd5b506100af6101aa3660046109c9565b61036e565b6000546001600160a01b0316331461020e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6102186000610834565b565b6001546000906001600160a01b03838116911614801561029d57506040516321887c3d60e01b81523060048201526001600160a01b038316906321887c3d90602401602060405180830381865afa158015610279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029d9190610a02565b92915050565b6000546001600160a01b031633146102fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610205565b6001600160a01b0381166103625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610205565b61036b81610834565b50565b816103788161021a565b6103de5760405162461bcd60e51b815260206004820152603160248201527f4d656d6265723a2063616c6c6572206973206e6f742061206d656d626572206f60448201527033103a34329030b9b9b7b1b4b0ba34b7b760791b6064820152608401610205565b6001546001600160a01b031633148061046a575060015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045f9190610a24565b6001600160a01b0316145b6104c45760405162461bcd60e51b815260206004820152602560248201527f4d656d6265723a2063616c6c6572206973206e6f7420746865206173736f636960448201526430ba34b7b760d91b6064820152608401610205565b6000836001600160a01b03166354e858e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105289190610a41565b67ffffffffffffffff16600254426105409190610a81565b61054a9190610a98565b60405163acfad24960e01b81526001600160a01b03858116600483015291925060009186169063acfad24990602401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba9190610a41565b67ffffffffffffffff1690506000856001600160a01b03166372f702f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190610a24565b6001600160a01b0316634262336061064a6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190610aba565b90506000612710846106c48585610ad3565b6106ce9190610ad3565b6106d89190610a98565b6040516370a0823160e01b81523060048201529091506000906107519083906001600160a01b038a16906370a0823190602401602060405180830381865afa158015610728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074c9190610aba565b610884565b9050866001600160a01b031663a9059cbb6107746000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e59190610a02565b506040518181526001600160a01b0388169030907f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56209060200160405180910390a3505042600255505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818311156108945781610896565b825b9392505050565b6001600160a01b038116811461036b57600080fd5b60008083601f8401126108c457600080fd5b50813567ffffffffffffffff8111156108dc57600080fd5b6020830191508360208285010111156108f457600080fd5b9250929050565b60008060008060008060008060c0898b03121561091757600080fd5b88356109228161089d565b975060208901356109328161089d565b965060408901356109428161089d565b955060608901359450608089013567ffffffffffffffff8082111561096657600080fd5b6109728c838d016108b2565b909650945060a08b013591508082111561098b57600080fd5b506109988b828c016108b2565b999c989b5096995094979396929594505050565b6000602082840312156109be57600080fd5b81356108968161089d565b600080604083850312156109dc57600080fd5b82356109e78161089d565b915060208301356109f78161089d565b809150509250929050565b600060208284031215610a1457600080fd5b8151801515811461089657600080fd5b600060208284031215610a3657600080fd5b81516108968161089d565b600060208284031215610a5357600080fd5b815167ffffffffffffffff8116811461089657600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610a9357610a93610a6b565b500390565b600082610ab557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610acc57600080fd5b5051919050565b6000816000190483118215151615610aed57610aed610a6b565b50029056fea164736f6c634300080d000a",
    "sourceMap": "324:1962:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:201;;;;;;;;;;-1:-1:-1;708:201:12;;;;;:::i;:::-;;;;;;;;;;;;2412:93:15;;;;;;;;;;-1:-1:-1;2486:12:15;;-1:-1:-1;;;;;2486:12:15;2412:93;;;-1:-1:-1;;;;;1896:32:22;;;1878:51;;1866:2;1851:18;2412:93:15;;;;;;;;1668:101:0;;;;;;;;;;;;;:::i;375:29:12:-;;;;;;;;;;;;;;;;;;;2086:25:22;;;2074:2;2059:18;375:29:12;1940:177:22;2511:203:15;;;;;;;;;;-1:-1:-1;2511:203:15;;;;;:::i;:::-;;:::i;:::-;;;2559:14:22;;2552:22;2534:41;;2522:2;2507:18;2511:203:15;2394:187:22;1036:85:0;;;;;;;;;;-1:-1:-1;1082:7:0;1108:6;-1:-1:-1;;;;;1108:6:0;1036:85;;1918:198;;;;;;;;;;-1:-1:-1;1918:198:0;;;;;:::i;:::-;;:::i;1527:757:12:-;;;;;;;;;;-1:-1:-1;1527:757:12;;;;;:::i;:::-;;:::i;1668:101:0:-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:0;719:10:9;1248:23:0;1240:68;;;;-1:-1:-1;;;1240:68:0;;3670:2:22;1240:68:0;;;3652:21:22;;;3689:18;;;3682:30;3748:34;3728:18;;;3721:62;3800:18;;1240:68:0;;;;;;;;;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;2511:203:15:-;2666:12;;2620:4;;-1:-1:-1;;;;;2647:31:15;;;2666:12;;2647:31;:60;;;;-1:-1:-1;2682:25:15;;-1:-1:-1;;;2682:25:15;;2702:4;2682:25;;;1878:51:22;-1:-1:-1;;;;;2682:19:15;;;;;1851:18:22;;2682:25:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2640:67;2511:203;-1:-1:-1;;2511:203:15:o;1918:198:0:-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:0;719:10:9;1248:23:0;1240:68;;;;-1:-1:-1;;;1240:68:0;;3670:2:22;1240:68:0;;;3652:21:22;;;3689:18;;;3682:30;3748:34;3728:18;;;3721:62;3800:18;;1240:68:0;3468:356:22;1240:68:0;-1:-1:-1;;;;;2006:22:0;::::1;1998:73;;;::::0;-1:-1:-1;;;1998:73:0;;4536:2:22;1998:73:0::1;::::0;::::1;4518:21:22::0;4575:2;4555:18;;;4548:30;4614:34;4594:18;;;4587:62;-1:-1:-1;;;4665:18:22;;;4658:36;4711:19;;1998:73:0::1;4334:402:22::0;1998:73:0::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;1527:757:12:-;1615:7;2806:26:15;2816:15;2806:9;:26::i;:::-;2785:122;;;;-1:-1:-1;;;2785:122:15;;4943:2:22;2785:122:15;;;4925:21:22;4982:2;4962:18;;;4955:30;5021:34;5001:18;;;4994:62;-1:-1:-1;;;5072:18:22;;;5065:47;5129:19;;2785:122:15;4741:413:22;2785:122:15;2486:12;;-1:-1:-1;;;;;2486:12:15;719:10:9;3102:38:15::1;::::0;:94:::1;;-1:-1:-1::0;3160:12:15::1;::::0;:20:::1;::::0;;-1:-1:-1;;;3160:20:15;;;;719:10:9;;-1:-1:-1;;;;;3160:12:15::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:12;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3160:36:15::1;;3102:94;3081:178;;;::::0;-1:-1:-1;;;3081:178:15;;5617:2:22;3081:178:15::1;::::0;::::1;5599:21:22::0;5656:2;5636:18;;;5629:30;5695:34;5675:18;;;5668:62;-1:-1:-1;;;5746:18:22;;;5739:35;5791:19;;3081:178:15::1;5415:401:22::0;3081:178:15::1;1662:32:12::2;1747:7;-1:-1:-1::0;;;;;1747:38:12::2;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1698:89;;1717:14;;1699:15;:32;;;;:::i;:::-;1698:89;;;;:::i;:::-;1816:23;::::0;-1:-1:-1;;;1816:23:12;;-1:-1:-1;;;;;1896:32:22;;;1816:23:12::2;::::0;::::2;1878:51:22::0;1662:126:12;;-1:-1:-1;1799:14:12::2;::::0;1816:16;::::2;::::0;::::2;::::0;1851:18:22;;1816:23:12::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1799:40;;;;1849:13;1865:7;-1:-1:-1::0;;;;;1865:20:12::2;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1865:30:12::2;;1896:7;1082::0::0;1108:6;-1:-1:-1;;;;;1108:6:0;;1036:85;1896:7:12::2;1865:39;::::0;-1:-1:-1;;;;;;1865:39:12::2;::::0;;;;;;-1:-1:-1;;;;;1896:32:22;;;1865:39:12::2;::::0;::::2;1878:51:22::0;1851:18;;1865:39:12::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1849:55:::0;-1:-1:-1;1914:20:12::2;1995:5;1955:24:::0;1938:14:::2;1946:6:::0;1849:55;1938:14:::2;:::i;:::-;:41;;;;:::i;:::-;1937:63;;;;:::i;:::-;2046:30;::::0;-1:-1:-1;;;2046:30:12;;2070:4:::2;2046:30;::::0;::::2;1878:51:22::0;1914:86:12;;-1:-1:-1;2011:14:12::2;::::0;2028:49:::2;::::0;1914:86;;-1:-1:-1;;;;;2046:15:12;::::2;::::0;::::2;::::0;1851:18:22;;2046:30:12::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2028:3;:49::i;:::-;2011:66;;2087:5;-1:-1:-1::0;;;;;2087:14:12::2;;2110:7;1082::0::0;1108:6;-1:-1:-1;;;;;1108:6:0;;1036:85;2110:7:12::2;2087:40;::::0;-1:-1:-1;;;;;;2087:40:12::2;::::0;;;;;;-1:-1:-1;;;;;7665:32:22;;;2087:40:12::2;::::0;::::2;7647:51:22::0;7714:18;;;7707:34;;;7620:18;;2087:40:12::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2143:53:12::2;::::0;2086:25:22;;;-1:-1:-1;;;;;2143:53:12;::::2;::::0;2166:4:::2;::::0;2143:53:::2;::::0;2074:2:22;2059:18;2143:53:12::2;;;;;;;-1:-1:-1::0;;2262:15:12::2;2245:14;:32:::0;-1:-1:-1;;;;;;1527:757:12:o;2270:187:0:-;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:0;;;-1:-1:-1;;;;;;2378:17:0;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;1283:104:12:-;1340:7;1371:1;1366;:6;;:14;;1379:1;1366:14;;;1375:1;1366:14;1359:21;1283:104;-1:-1:-1;;;1283:104:12:o;14:131:22:-;-1:-1:-1;;;;;89:31:22;;79:42;;69:70;;135:1;132;125:12;150:347;201:8;211:6;265:3;258:4;250:6;246:17;242:27;232:55;;283:1;280;273:12;232:55;-1:-1:-1;306:20:22;;349:18;338:30;;335:50;;;381:1;378;371:12;335:50;418:4;410:6;406:17;394:29;;470:3;463:4;454:6;446;442:19;438:30;435:39;432:59;;;487:1;484;477:12;432:59;150:347;;;;;:::o;502:1205::-;628:6;636;644;652;660;668;676;684;737:3;725:9;716:7;712:23;708:33;705:53;;;754:1;751;744:12;705:53;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;919:2:22;904:18;;891:32;932:33;891:32;932:33;:::i;:::-;984:7;-1:-1:-1;1043:2:22;1028:18;;1015:32;1056:33;1015:32;1056:33;:::i;:::-;1108:7;-1:-1:-1;1162:2:22;1147:18;;1134:32;;-1:-1:-1;1217:3:22;1202:19;;1189:33;1241:18;1271:14;;;1268:34;;;1298:1;1295;1288:12;1268:34;1337:58;1387:7;1378:6;1367:9;1363:22;1337:58;:::i;:::-;1414:8;;-1:-1:-1;1311:84:22;-1:-1:-1;1502:3:22;1487:19;;1474:33;;-1:-1:-1;1519:16:22;;;1516:36;;;1548:1;1545;1538:12;1516:36;;1587:60;1639:7;1628:8;1617:9;1613:24;1587:60;:::i;:::-;502:1205;;;;-1:-1:-1;502:1205:22;;-1:-1:-1;502:1205:22;;;;;;1666:8;-1:-1:-1;;;502:1205:22:o;2122:267::-;2201:6;2254:2;2242:9;2233:7;2229:23;2225:32;2222:52;;;2270:1;2267;2260:12;2222:52;2309:9;2296:23;2328:31;2353:5;2328:31;:::i;3046:417::-;3143:6;3151;3204:2;3192:9;3183:7;3179:23;3175:32;3172:52;;;3220:1;3217;3210:12;3172:52;3259:9;3246:23;3278:31;3303:5;3278:31;:::i;:::-;3328:5;-1:-1:-1;3385:2:22;3370:18;;3357:32;3398:33;3357:32;3398:33;:::i;:::-;3450:7;3440:17;;;3046:417;;;;;:::o;4052:277::-;4119:6;4172:2;4160:9;4151:7;4147:23;4143:32;4140:52;;;4188:1;4185;4178:12;4140:52;4220:9;4214:16;4273:5;4266:13;4259:21;4252:5;4249:32;4239:60;;4295:1;4292;4285:12;5159:251;5229:6;5282:2;5270:9;5261:7;5257:23;5253:32;5250:52;;;5298:1;5295;5288:12;5250:52;5330:9;5324:16;5349:31;5374:5;5349:31;:::i;5821:288::-;5890:6;5943:2;5931:9;5922:7;5918:23;5914:32;5911:52;;;5959:1;5956;5949:12;5911:52;5991:9;5985:16;6041:18;6034:5;6030:30;6023:5;6020:41;6010:69;;6075:1;6072;6065:12;6114:127;6175:10;6170:3;6166:20;6163:1;6156:31;6206:4;6203:1;6196:15;6230:4;6227:1;6220:15;6246:125;6286:4;6314:1;6311;6308:8;6305:34;;;6319:18;;:::i;:::-;-1:-1:-1;6356:9:22;;6246:125::o;6376:217::-;6416:1;6442;6432:132;;6486:10;6481:3;6477:20;6474:1;6467:31;6521:4;6518:1;6511:15;6549:4;6546:1;6539:15;6432:132;-1:-1:-1;6578:9:22;;6376:217::o;7103:184::-;7173:6;7226:2;7214:9;7205:7;7201:23;7197:32;7194:52;;;7242:1;7239;7232:12;7194:52;-1:-1:-1;7265:16:22;;7103:184;-1:-1:-1;7103:184:22:o;7292:168::-;7332:7;7398:1;7394;7390:6;7386:14;7383:1;7380:21;7375:1;7368:9;7361:17;7357:45;7354:71;;;7405:18;;:::i;:::-;-1:-1:-1;7445:9:22;;7292:168::o",
    "linkReferences": {}
  },
  "userdoc": {
    "version": 1,
    "kind": "user"
  },
  "devdoc": {
    "version": 1,
    "kind": "dev",
    "methods": {
      "association()": {
        "details": "Returns the association"
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "tokensReceived(address,address,address,uint256,bytes,bytes)": {
        "details": "Called by an {IERC777} token contract whenever tokens are being moved or created into a registered account (`to`). The type of operation is conveyed by `from` being the zero address or not. This call occurs _after_ the token contract's state is updated, so {IERC777-balanceOf}, etc., can be used to query the post-operation state. This function may revert to prevent the operation from being executed."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    }
  },
  "ast": {
    "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Cashier.sol",
    "exportedSymbols": {
      "Address": [
        2382
      ],
      "App": [
        2539
      ],
      "AppBurnable": [
        2593
      ],
      "Association": [
        4902
      ],
      "Cashier": [
        2793
      ],
      "Charter": [
        4538
      ],
      "CharterConfig": [
        2820
      ],
      "CharterGovernanceToken": [
        4801
      ],
      "CharterStakingToken": [
        4752
      ],
      "Context": [
        2404
      ],
      "ERC20": [
        690
      ],
      "ERC777": [
        1884
      ],
      "Founded": [
        4641
      ],
      "FungibleLicense": [
        5132
      ],
      "IERC1820Registry": [
        2494
      ],
      "IERC20": [
        768
      ],
      "IERC20Metadata": [
        793
      ],
      "IERC777": [
        2047
      ],
      "IERC777Recipient": [
        2067
      ],
      "IERC777Sender": [
        2087
      ],
      "Limited": [
        5242
      ],
      "Listing": [
        5373
      ],
      "Math": [
        5394
      ],
      "Member": [
        5043
      ],
      "Ownable": [
        104
      ],
      "TimeDelayStakingToken": [
        5769
      ],
      "TrialDeposit": [
        2831
      ],
      "console": [
        13833
      ]
    },
    "id": 2794,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2595,
        "literals": [
          "solidity",
          "0.8",
          ".13"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:12"
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "id": 2596,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2794,
        "sourceUnit": 691,
        "src": "57:64:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "id": 2597,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2794,
        "sourceUnit": 2068,
        "src": "122:76:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "id": 2598,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2794,
        "sourceUnit": 1885,
        "src": "199:66:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Association.sol",
        "file": "./lib/Association.sol",
        "id": 2599,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2794,
        "sourceUnit": 5044,
        "src": "267:31:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Charter.sol",
        "file": "./Charter.sol",
        "id": 2600,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2794,
        "sourceUnit": 4539,
        "src": "299:23:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 2601,
              "name": "Member",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5043,
              "src": "344:6:12"
            },
            "id": 2602,
            "nodeType": "InheritanceSpecifier",
            "src": "344:6:12"
          },
          {
            "baseName": {
              "id": 2603,
              "name": "IERC777Recipient",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2067,
              "src": "352:16:12"
            },
            "id": 2604,
            "nodeType": "InheritanceSpecifier",
            "src": "352:16:12"
          }
        ],
        "canonicalName": "Cashier",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 2793,
        "linearizedBaseContracts": [
          2793,
          2067,
          5043,
          104,
          2404
        ],
        "name": "Cashier",
        "nameLocation": "333:7:12",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "7e9db830",
            "id": 2606,
            "mutability": "mutable",
            "name": "lastWithdrawAt",
            "nameLocation": "390:14:12",
            "nodeType": "VariableDeclaration",
            "scope": 2793,
            "src": "375:29:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2605,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "375:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 2607,
              "nodeType": "StructuredDocumentation",
              "src": "411:41:12",
              "text": "Fired when a cashier withdraws tokens"
            },
            "eventSelector": "8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620",
            "id": 2615,
            "name": "TokenWithdrawn",
            "nameLocation": "463:14:12",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2614,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2609,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "cashier",
                  "nameLocation": "503:7:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2615,
                  "src": "487:23:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2608,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "487:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2611,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "536:5:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2615,
                  "src": "520:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "520:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2613,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "559:6:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2615,
                  "src": "551:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "551:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "477:94:12"
            },
            "src": "457:115:12"
          },
          {
            "constant": true,
            "id": 2621,
            "mutability": "constant",
            "name": "_ERC1820_REGISTRY",
            "nameLocation": "613:17:12",
            "nodeType": "VariableDeclaration",
            "scope": 2793,
            "src": "578:123:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC1820Registry_$2494",
              "typeString": "contract IERC1820Registry"
            },
            "typeName": {
              "id": 2617,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 2616,
                "name": "IERC1820Registry",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 2494,
                "src": "578:16:12"
              },
              "referencedDeclaration": 2494,
              "src": "578:16:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC1820Registry_$2494",
                "typeString": "contract IERC1820Registry"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234",
                  "id": 2619,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "658:42:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 2618,
                "name": "IERC1820Registry",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 2494,
                "src": "641:16:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_IERC1820Registry_$2494_$",
                  "typeString": "type(contract IERC1820Registry)"
                }
              },
              "id": 2620,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "641:60:12",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC1820Registry_$2494",
                "typeString": "contract IERC1820Registry"
              }
            },
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              2066
            ],
            "body": {
              "id": 2636,
              "nodeType": "Block",
              "src": "907:2:12",
              "statements": []
            },
            "functionSelector": "0023de29",
            "id": 2637,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokensReceived",
            "nameLocation": "717:14:12",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2634,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2623,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "749:8:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "741:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2622,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "741:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2625,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "775:4:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "767:12:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2624,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2627,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "797:2:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "789:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2626,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "789:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2629,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "817:6:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "809:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2628,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "809:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2631,
                  "mutability": "mutable",
                  "name": "userData",
                  "nameLocation": "848:8:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "833:23:12",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2630,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "833:5:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2633,
                  "mutability": "mutable",
                  "name": "operatorData",
                  "nameLocation": "881:12:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "866:27:12",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2632,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "866:5:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "731:168:12"
            },
            "returnParameters": {
              "id": 2635,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "907:0:12"
            },
            "scope": 2793,
            "src": "708:201:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2673,
              "nodeType": "Block",
              "src": "952:290:12",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2644,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "981:3:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2645,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "981:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2643,
                      "name": "_transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 103,
                      "src": "962:18:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 2646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "962:30:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2647,
                  "nodeType": "ExpressionStatement",
                  "src": "962:30:12"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2649,
                        "name": "association",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2640,
                        "src": "1018:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Association_$4902",
                          "typeString": "contract Association"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Association_$4902",
                          "typeString": "contract Association"
                        }
                      ],
                      "id": 2648,
                      "name": "_setAssociation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4976,
                      "src": "1002:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Association_$4902_$returns$__$",
                        "typeString": "function (contract Association)"
                      }
                    },
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1002:28:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2651,
                  "nodeType": "ExpressionStatement",
                  "src": "1002:28:12"
                },
                {
                  "expression": {
                    "id": 2655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2652,
                      "name": "lastWithdrawAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2606,
                      "src": "1040:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2653,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "1057:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "1057:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1040:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2656,
                  "nodeType": "ExpressionStatement",
                  "src": "1040:32:12"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2662,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "1145:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Cashier_$2793",
                              "typeString": "contract Cashier"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Cashier_$2793",
                              "typeString": "contract Cashier"
                            }
                          ],
                          "id": 2661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1137:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2660,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1137:7:12",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1137:13:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "455243373737546f6b656e73526563697069656e74",
                            "id": 2665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1174:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b",
                              "typeString": "literal_string \"ERC777TokensRecipient\""
                            },
                            "value": "ERC777TokensRecipient"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b",
                              "typeString": "literal_string \"ERC777TokensRecipient\""
                            }
                          ],
                          "id": 2664,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "1164:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1164:34:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2669,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "1220:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Cashier_$2793",
                              "typeString": "contract Cashier"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Cashier_$2793",
                              "typeString": "contract Cashier"
                            }
                          ],
                          "id": 2668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1212:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2667,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1212:7:12",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1212:13:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 2657,
                        "name": "_ERC1820_REGISTRY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2621,
                        "src": "1082:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1820Registry_$2494",
                          "typeString": "contract IERC1820Registry"
                        }
                      },
                      "id": 2659,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setInterfaceImplementer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2447,
                      "src": "1082:41:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,bytes32,address) external"
                      }
                    },
                    "id": 2671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1082:153:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2672,
                  "nodeType": "ExpressionStatement",
                  "src": "1082:153:12"
                }
              ]
            },
            "id": 2674,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2640,
                  "mutability": "mutable",
                  "name": "association",
                  "nameLocation": "939:11:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2674,
                  "src": "927:23:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Association_$4902",
                    "typeString": "contract Association"
                  },
                  "typeName": {
                    "id": 2639,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2638,
                      "name": "Association",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4902,
                      "src": "927:11:12"
                    },
                    "referencedDeclaration": 4902,
                    "src": "927:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Association_$4902",
                      "typeString": "contract Association"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "926:25:12"
            },
            "returnParameters": {
              "id": 2642,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "952:0:12"
            },
            "scope": 2793,
            "src": "915:327:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2677,
              "nodeType": "Block",
              "src": "1275:2:12",
              "statements": []
            },
            "id": 2678,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1255:2:12"
            },
            "returnParameters": {
              "id": 2676,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1275:0:12"
            },
            "scope": 2793,
            "src": "1248:29:12",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2694,
              "nodeType": "Block",
              "src": "1349:38:12",
              "statements": [
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 2687,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2680,
                        "src": "1366:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "id": 2688,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2682,
                        "src": "1371:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1366:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "id": 2691,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2682,
                      "src": "1379:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "1366:14:12",
                    "trueExpression": {
                      "id": 2690,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2680,
                      "src": "1375:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2686,
                  "id": 2693,
                  "nodeType": "Return",
                  "src": "1359:21:12"
                }
              ]
            },
            "id": 2695,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "min",
            "nameLocation": "1292:3:12",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2680,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "1304:1:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2695,
                  "src": "1296:9:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1296:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2682,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "1315:1:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2695,
                  "src": "1307:9:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2681,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1307:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1295:22:12"
            },
            "returnParameters": {
              "id": 2686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2685,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2695,
                  "src": "1340:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2684,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1340:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1339:9:12"
            },
            "scope": 2793,
            "src": "1283:104:12",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2791,
              "nodeType": "Block",
              "src": "1652:632:12",
              "statements": [
                {
                  "assignments": [
                    2710
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2710,
                      "mutability": "mutable",
                      "name": "periodsSinceLastWithdraw",
                      "nameLocation": "1670:24:12",
                      "nodeType": "VariableDeclaration",
                      "scope": 2791,
                      "src": "1662:32:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2709,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1662:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2721,
                  "initialValue": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 2711,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "1699:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 2712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "1699:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 2713,
                                "name": "lastWithdrawAt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2606,
                                "src": "1717:14:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1699:32:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2715,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1698:34:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2716,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2698,
                              "src": "1747:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            },
                            "id": 2717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "earningWithdrawPeriodInSeconds",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3096,
                            "src": "1747:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$",
                              "typeString": "function () view external returns (uint64)"
                            }
                          },
                          "id": 2718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1747:40:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "1698:89:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2720,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1697:91:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1662:126:12"
                },
                {
                  "assignments": [
                    2723
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2723,
                      "mutability": "mutable",
                      "name": "scalar",
                      "nameLocation": "1807:6:12",
                      "nodeType": "VariableDeclaration",
                      "scope": 2791,
                      "src": "1799:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2722,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1799:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2728,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2726,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2701,
                        "src": "1833:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$690",
                          "typeString": "contract ERC20"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERC20_$690",
                          "typeString": "contract ERC20"
                        }
                      ],
                      "expression": {
                        "id": 2724,
                        "name": "charter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2698,
                        "src": "1816:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Charter_$4538",
                          "typeString": "contract Charter"
                        }
                      },
                      "id": 2725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "scalarOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3171,
                      "src": "1816:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_ERC20_$690_$returns$_t_uint64_$",
                        "typeString": "function (contract ERC20) view external returns (uint64)"
                      }
                    },
                    "id": 2727,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1816:23:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1799:40:12"
                },
                {
                  "assignments": [
                    2730
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2730,
                      "mutability": "mutable",
                      "name": "stake",
                      "nameLocation": "1857:5:12",
                      "nodeType": "VariableDeclaration",
                      "scope": 2791,
                      "src": "1849:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2729,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1849:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2738,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2735,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32,
                          "src": "1896:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 2736,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1896:7:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 2731,
                            "name": "charter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2698,
                            "src": "1865:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Charter_$4538",
                              "typeString": "contract Charter"
                            }
                          },
                          "id": 2732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakingToken",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2857,
                          "src": "1865:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_CharterStakingToken_$4752_$",
                            "typeString": "function () view external returns (contract CharterStakingToken)"
                          }
                        },
                        "id": 2733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1865:22:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CharterStakingToken_$4752",
                          "typeString": "contract CharterStakingToken"
                        }
                      },
                      "id": 2734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakeOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5582,
                      "src": "1865:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 2737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1865:39:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1849:55:12"
                },
                {
                  "assignments": [
                    2740
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2740,
                      "mutability": "mutable",
                      "name": "withdrawable",
                      "nameLocation": "1922:12:12",
                      "nodeType": "VariableDeclaration",
                      "scope": 2791,
                      "src": "1914:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2739,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1914:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2749,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2741,
                              "name": "stake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2730,
                              "src": "1938:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "id": 2742,
                              "name": "scalar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2723,
                              "src": "1946:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1938:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 2744,
                            "name": "periodsSinceLastWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2710,
                            "src": "1955:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1938:41:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2746,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1937:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "3130303030",
                      "id": 2747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1995:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10000_by_1",
                        "typeString": "int_const 10000"
                      },
                      "value": "10000"
                    },
                    "src": "1937:63:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1914:86:12"
                },
                {
                  "assignments": [
                    2751
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2751,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "2019:6:12",
                      "nodeType": "VariableDeclaration",
                      "scope": 2791,
                      "src": "2011:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2750,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2011:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2762,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2753,
                        "name": "withdrawable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2740,
                        "src": "2032:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 2758,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "2070:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Cashier_$2793",
                                  "typeString": "contract Cashier"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Cashier_$2793",
                                  "typeString": "contract Cashier"
                                }
                              ],
                              "id": 2757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2062:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2756,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2062:7:12",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2062:13:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 2754,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2701,
                            "src": "2046:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$690",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 2755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 203,
                          "src": "2046:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 2760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2046:30:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2752,
                      "name": "min",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2695,
                      "src": "2028:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2028:49:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2011:66:12"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2768,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32,
                              "src": "2110:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 2769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2110:7:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2102:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_payable_$",
                            "typeString": "type(address payable)"
                          },
                          "typeName": {
                            "id": 2766,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2102:8:12",
                            "stateMutability": "payable",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2102:16:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2771,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2751,
                        "src": "2120:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 2763,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2701,
                        "src": "2087:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$690",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 2765,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 228,
                      "src": "2087:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2087:40:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2773,
                  "nodeType": "ExpressionStatement",
                  "src": "2087:40:12"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2777,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "2166:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Cashier_$2793",
                              "typeString": "contract Cashier"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Cashier_$2793",
                              "typeString": "contract Cashier"
                            }
                          ],
                          "id": 2776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2158:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2775,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2158:7:12",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2158:13:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2781,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2701,
                            "src": "2181:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$690",
                              "typeString": "contract ERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ERC20_$690",
                              "typeString": "contract ERC20"
                            }
                          ],
                          "id": 2780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2173:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2779,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2173:7:12",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2782,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2173:14:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2783,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2751,
                        "src": "2189:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2774,
                      "name": "TokenWithdrawn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2615,
                      "src": "2143:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 2784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2143:53:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2785,
                  "nodeType": "EmitStatement",
                  "src": "2138:58:12"
                },
                {
                  "expression": {
                    "id": 2789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2786,
                      "name": "lastWithdrawAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2606,
                      "src": "2245:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2787,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "2262:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "2262:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2245:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2790,
                  "nodeType": "ExpressionStatement",
                  "src": "2245:32:12"
                }
              ]
            },
            "functionSelector": "f940e385",
            "id": 2792,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2704,
                    "name": "charter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2698,
                    "src": "1615:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  }
                ],
                "id": 2705,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 2703,
                  "name": "requireBelongsTo",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5018,
                  "src": "1598:16:12"
                },
                "nodeType": "ModifierInvocation",
                "src": "1598:25:12"
              },
              {
                "id": 2707,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 2706,
                  "name": "onlyAssociation",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5042,
                  "src": "1632:15:12"
                },
                "nodeType": "ModifierInvocation",
                "src": "1632:15:12"
              }
            ],
            "name": "withdraw",
            "nameLocation": "1536:8:12",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2698,
                  "mutability": "mutable",
                  "name": "charter",
                  "nameLocation": "1553:7:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "1545:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Charter_$4538",
                    "typeString": "contract Charter"
                  },
                  "typeName": {
                    "id": 2697,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2696,
                      "name": "Charter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4538,
                      "src": "1545:7:12"
                    },
                    "referencedDeclaration": 4538,
                    "src": "1545:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2701,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "1568:5:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "1562:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$690",
                    "typeString": "contract ERC20"
                  },
                  "typeName": {
                    "id": 2700,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2699,
                      "name": "ERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 690,
                      "src": "1562:5:12"
                    },
                    "referencedDeclaration": 690,
                    "src": "1562:5:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$690",
                      "typeString": "contract ERC20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1544:30:12"
            },
            "returnParameters": {
              "id": 2708,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1652:0:12"
            },
            "scope": 2793,
            "src": "1527:757:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 2794,
        "src": "324:1962:12",
        "usedErrors": []
      }
    ],
    "src": "32:2255:12"
  }
}