{
  "contractName": "DaoStakeLocking",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "resolver",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "dgdBadgeToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_configKey",
          "type": "bytes32"
        }
      ],
      "name": "getAddressConfig",
      "outputs": [
        {
          "name": "_configValue",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "key",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "get_contract",
      "outputs": [
        {
          "name": "_contract",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentTimeInQuarter",
      "outputs": [
        {
          "name": "_currentT",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isMainPhase",
      "outputs": [
        {
          "name": "_isMainPhase",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isLockingPhase",
      "outputs": [
        {
          "name": "_isLockingPhase",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentQuarterNumber",
      "outputs": [
        {
          "name": "_quarterNumber",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "isParticipant",
      "outputs": [
        {
          "name": "_is",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_configKey",
          "type": "bytes32"
        }
      ],
      "name": "getBytesConfig",
      "outputs": [
        {
          "name": "_configValue",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "carbonVoting1",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_configKey",
          "type": "bytes32"
        }
      ],
      "name": "getUintConfig",
      "outputs": [
        {
          "name": "_configValue",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "dgdToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isDaoNotReplaced",
      "outputs": [
        {
          "name": "_isNotReplaced",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CONTRACT_ADDRESS",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "isProposalPaused",
      "outputs": [
        {
          "name": "_isPausedOrStopped",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "isModerator",
      "outputs": [
        {
          "name": "_is",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "carbonVoting2",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_resolver",
          "type": "address"
        },
        {
          "name": "_dgdToken",
          "type": "address"
        },
        {
          "name": "_dgdBadgeToken",
          "type": "address"
        },
        {
          "name": "_carbonVoting1",
          "type": "address"
        },
        {
          "name": "_carbonVoting2",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "RedeemBadge",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_currentLockedDGDStake",
          "type": "uint256"
        }
      ],
      "name": "LockDGD",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_currentLockedDGDStake",
          "type": "uint256"
        }
      ],
      "name": "WithdrawDGD",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "redeemBadge",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "lockDGD",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawDGD",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "confirmContinuedParticipation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260006001026003906000191690556000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70726f706f73616c5f73746174655f70726570726f706f73616c0000000000006005906000191690557f70726f706f73616c5f73746174655f64726166740000000000000000000000006006906000191690557f70726f706f73616c5f73746174655f6d6f6465726174656400000000000000006007906000191690557f70726f706f73616c5f73746174655f6f6e676f696e67000000000000000000006008906000191690557f70726f706f73616c5f73746174655f636c6f73656400000000000000000000006009906000191690557f70726f706f73616c5f73746174655f6172636869766564000000000000000000600a906000191690556001600b556002600c556003600d556001600e556002600f5560036010557f696e7465725f6467645f696400000000000000000000000000000000000000006011906000191690557f696e7465725f6d6f645f6467645f6964000000000000000000000000000000006012906000191690557f696e7465725f626f6e75735f63616c63756c6174696f6e5f69640000000000006013906000191690557f64616f00000000000000000000000000000000000000000000000000000000006014906000191690557f64616f3a7370656369616c3a70726f706f73616c0000000000000000000000006015906000191690557f64616f3a7374616b652d6c6f636b696e670000000000000000000000000000006016906000191690557f64616f3a766f74696e67000000000000000000000000000000000000000000006017906000191690557f64616f3a766f74696e673a636c61696d730000000000000000000000000000006018906000191690557f64616f3a73766f74696e673a636c61696d7300000000000000000000000000006019906000191690557f64616f3a6964656e746974790000000000000000000000000000000000000000601a906000191690557f64616f3a726577617264732d6d616e6167657200000000000000000000000000601b906000191690557f64616f3a726577617264732d6578747261730000000000000000000000000000601c906000191690557f64616f3a726f6c65730000000000000000000000000000000000000000000000601d906000191690557f64616f3a66756e64696e672d6d616e6167657200000000000000000000000000601e906000191690557f64616f3a77686974656c697374696e6700000000000000000000000000000000601f906000191690557f64616f3a696e666f726d6174696f6e00000000000000000000000000000000006020906000191690557f736572766963653a726f6c6500000000000000000000000000000000000000006021906000191690557f736572766963653a64616f3a696e666f000000000000000000000000000000006022906000191690557f736572766963653a64616f3a6c697374696e67000000000000000000000000006023906000191690557f736572766963653a64616f3a63616c63756c61746f72000000000000000000006024906000191690557f73746f726167653a64616f0000000000000000000000000000000000000000006025906000191690557f73746f726167653a64616f3a636f756e746572000000000000000000000000006026906000191690557f73746f726167653a64616f3a75706772616465000000000000000000000000006027906000191690557f73746f726167653a64616f3a6964656e746974790000000000000000000000006028906000191690557f73746f726167653a64616f3a706f696e747300000000000000000000000000006029906000191690557f73746f726167653a64616f3a7370656369616c00000000000000000000000000602a906000191690557f73746f726167653a64616f3a636f6e6669670000000000000000000000000000602b906000191690557f73746f726167653a64616f3a7374616b65000000000000000000000000000000602c906000191690557f73746f726167653a64616f3a7265776172647300000000000000000000000000602d906000191690557f73746f726167653a64616f3a77686974656c697374696e670000000000000000602e906000191690557f73746f726167653a696e7465726d6564696174653a726573756c747300000000602f906000191690557f743a6467640000000000000000000000000000000000000000000000000000006030906000191690557f743a6467780000000000000000000000000000000000000000000000000000006031906000191690557f743a6261646765000000000000000000000000000000000000000000000000006032906000191690556001603360006101000a81548160ff021916908360ff1602179055506002603360016101000a81548160ff021916908360ff1602179055506003603360026101000a81548160ff021916908360ff1602179055506004603360036101000a81548160ff021916908360ff1602179055506276a7006034557f6d696e5f6467645f7061727469636970616e74000000000000000000000000006035906000191690557f6d696e5f6467645f6d6f64657261746f720000000000000000000000000000006036906000191690557f6d696e5f72657075746174696f6e5f6d6f64657261746f7200000000000000006037906000191690557f6c6f636b696e675f70686173655f6475726174696f6e000000000000000000006038906000191690557f717561727465725f6475726174696f6e000000000000000000000000000000006039906000191690557f766f74696e675f636f6d6d69745f706861736500000000000000000000000000603a906000191690557f766f74696e675f70686173655f746f74616c0000000000000000000000000000603b906000191690557f696e746572696d5f766f74696e675f636f6d6d69745f70686173650000000000603c906000191690557f696e746572696d5f766f74696e675f70686173655f746f74616c000000000000603d906000191690557f64726166745f71756f72756d5f66697865645f6e756d657261746f7200000000603e906000191690557f64726166745f71756f72756d5f66697865645f64656e6f6d696e61746f720000603f906000191690557f64726166745f71756f72756d5f73666163746f725f6e756d657261746f7200006040906000191690557f64726166745f71756f72756d5f73666163746f725f64656e6f6d696e61746f726041906000191690557f766f74655f71756f72756d5f66697865645f6e756d657261746f7200000000006042906000191690557f766f74655f71756f72756d5f66697865645f64656e6f6d696e61746f720000006043906000191690557f766f74655f71756f72756d5f73666163746f725f6e756d657261746f720000006044906000191690557f766f74655f71756f72756d5f73666163746f725f64656e6f6d696e61746f72006045906000191690557f66696e616c5f7265776172645f73666163746f725f6e756d657261746f7200006046906000191690557f66696e616c5f7265776172645f73666163746f725f64656e6f6d696e61746f726047906000191690557f64726166745f71756f74615f6e756d657261746f7200000000000000000000006048906000191690557f64726166745f71756f74615f64656e6f6d696e61746f720000000000000000006049906000191690557f766f74696e675f71756f74615f6e756d657261746f7200000000000000000000604a906000191690557f766f74696e675f71756f74615f64656e6f6d696e61746f720000000000000000604b906000191690557f6d696e696d616c5f717000000000000000000000000000000000000000000000604c906000191690557f717561727465725f706f696e745f7363616c696e675f666163746f7200000000604d906000191690557f7265705f706f696e745f7363616c696e675f666163746f720000000000000000604e906000191690557f6d696e696d616c5f6d6f645f7170000000000000000000000000000000000000604f906000191690557f6d6f645f71705f7363616c696e675f666163746f7200000000000000000000006050906000191690557f6d6f645f7265705f706f696e745f7363616c696e675f666163746f72000000006051906000191690557f717561727465725f706f696e745f64726166745f766f746500000000000000006052906000191690557f717561727465725f706f696e745f766f746500000000000000000000000000006053906000191690557f717561727465725f706f696e745f696e746572696d5f766f74650000000000006054906000191690557f715f705f6d696c6573746f6e655f636f6d706c6574696f6e00000000000000006055906000191690557f626f6e75735f72657075746174696f6e5f6e756d657261746f720000000000006056906000191690557f626f6e75735f72657075746174696f6e5f64656e6f6d696e61746f72000000006057906000191690557f7370656369616c5f70726f706f73616c5f636f6d6d69745f70686173650000006058906000191690557f7370656369616c5f70726f706f73616c5f70686173655f746f74616c000000006059906000191690557f636f6e6669675f7370656369616c5f71756f74615f6e756d657261746f720000605a906000191690557f636f6e6669675f7370656369616c5f71756f74615f64656e6f6d696e61746f72605b906000191690557f7370656369616c5f71756f72756d5f6e756d657261746f720000000000000000605c906000191690557f7370656369616c5f71756f72756d5f64656e6f6d696e61746f72000000000000605d906000191690557f636f6e6669675f6d61785f72657075746174696f6e5f646564756374696f6e00605e906000191690557f636f6e6669675f70756e6973686d656e745f6e6f745f6c6f636b696e67000000605f906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f6e756d00000000006060906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f64656e00000000006061906000191690557f636f6e6669675f6d61785f6d5f72705f646564756374696f6e000000000000006062906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f6e756d0000006063906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f64656e0000006064906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f6e756d000000000000000000006065906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f64656e000000000000000000006066906000191690557f636f6e6669675f64726166745f766f74696e675f7068617365000000000000006067906000191690557f636f6e6669675f72705f626f6f73745f7065725f6261646765000000000000006068906000191690557f636f6e6669675f636c61696d696e675f646561646c696e6500000000000000006069906000191690557f636f6e6669675f70726570726f706f73616c5f636f6c6c61746572616c000000606a906000191690557f636f6e6669675f6d61785f66756e64696e675f6e6f6e44696769780000000000606b906000191690557f636f6e6669675f6d61785f6d696c6573746f6e65735f6e6f6e44696769780000606c906000191690557f636f6e6669675f6e6f6e44696769785f70726f706f73616c5f63617000000000606d906000191690557f636f6e6669675f646561645f6475726174696f6e000000000000000000000000606e906000191690557f636f6e6669675f63765f72657075746174696f6e000000000000000000000000606f906000191690553480156200113457600080fd5b5060405160a08062005bf583398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506200119d60165486620012b8640100000000026401000000009004565b1515620011a957600080fd5b83607060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082607160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081607260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080607360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062001549565b6000808273ffffffffffffffffffffffffffffffffffffffff16636d19a8826040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200132057600080fd5b505af115801562001335573d6000803e3d6000fd5b505050506040513d60208110156200134c57600080fd5b810190808051906020019092919050505090506000151581151514156200153d5730600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600181600019169055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0f6ef4a600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620014ea57600080fd5b505af1158015620014ff573d6000803e3d6000fd5b505050506040513d60208110156200151657600080fd5b810190808051906020019092919050505015156200153357600080fd5b6001915062001542565b600091505b5092915050565b61469c80620015596000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec1461013857806314efcd3c1461018f5780631b1e53ef146101bc5780631d8ccd04146102135780633943380c146102845780633f83acff146102b7578063560a25ea14610328578063685330601461035357806374cd7f6d146103825780637d6fed80146103995780637f6a26b6146103c8578063929066f5146103f357806393ddad081461044e578063963cdbfd1461049b5780639bd71354146104c8578063b1e2b9dd1461051f578063be6999c414610564578063d70d9358146105bb578063db4ecbc1146105ea578063dda249f514610641578063f94f0f3314610658578063fa6f3936146106a1578063fbc28462146106fc575b600080fd5b34801561014457600080fd5b5061014d610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019b57600080fd5b506101ba60048036038101908080359060200190929190505050610778565b005b3480156101c857600080fd5b506101d16107fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021f57600080fd5b506102426004803603810190808035600019169060200190929190505050610822565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029057600080fd5b506102996108e4565b60405180826000191660001916815260200191505060405180910390f35b3480156102c357600080fd5b506102e660048036038101908080356000191690602001909291905050506108ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561033457600080fd5b5061033d6109c6565b6040518082815260200191505060405180910390f35b34801561035f57600080fd5b506103686109d6565b604051808215151515815260200191505060405180910390f35b34801561038e57600080fd5b50610397610a02565b005b3480156103a557600080fd5b506103ae610a0e565b604051808215151515815260200191505060405180910390f35b3480156103d457600080fd5b506103dd610a29565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610434600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a39565b604051808215151515815260200191505060405180910390f35b34801561045a57600080fd5b5061047d6004803603810190808035600019169060200190929190505050610c1a565b60405180826000191660001916815260200191505060405180910390f35b3480156104a757600080fd5b506104c660048036038101908080359060200190929190505050610cdc565b005b3480156104d457600080fd5b506104dd6117ee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052b57600080fd5b5061054e6004803603810190808035600019169060200190929190505050611814565b6040518082815260200191505060405180910390f35b34801561057057600080fd5b506105796118d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c757600080fd5b506105d06118fc565b604051808215151515815260200191505060405180910390f35b3480156105f657600080fd5b506105ff6119aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064d57600080fd5b506106566119d0565b005b34801561066457600080fd5b506106876004803603810190808035600019169060200190929190505050611fd7565b604051808215151515815260200191505060405180910390f35b3480156106ad57600080fd5b506106e2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061212c565b604051808215151515815260200191505060405180910390f35b34801561070857600080fd5b506107116123ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000811115156107f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f7a65726f20616d6f756e7400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6107f981612425565b50565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061082c612ece565b73ffffffffffffffffffffffffffffffffffffffff1663e6b39eab836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050506040513d60208110156108cc57600080fd5b81019080805190602001909291905050509050919050565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561098457600080fd5b505af1158015610998573d6000803e3d6000fd5b505050506040513d60208110156109ae57600080fd5b81019080805190602001909291905050509050919050565b60006109d142612ee0565b905090565b60006109e06118fc565b80156109fd57506109f2603854611814565b6109fa6109c6565b10155b905090565b610a0c6000612425565b565b6000610a1b603854611814565b610a236109c6565b10905090565b6000610a3442612fc9565b905090565b6000610a43610a29565b610a4b6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ae557600080fd5b505af1158015610af9573d6000803e3d6000fd5b505050506040513d6020811015610b0f57600080fd5b8101908080519060200190929190505050148015610c135750610b33603554611814565b610b3b6130de565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a27846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b505050506040513d6020811015610bff57600080fd5b810190808051906020019092919050505010155b9050919050565b6000610c24612ece565b73ffffffffffffffffffffffffffffffffffffffff1663c0a8405d836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610c9a57600080fd5b505af1158015610cae573d6000803e3d6000fd5b505050506040513d6020811015610cc457600080fd5b81019080805190602001909291905050509050919050565b610ce461464e565b610cec61464e565b600080610cf7610a29565b6001811115610dc0576000610d0a6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610d7857600080fd5b505af1158015610d8c573d6000803e3d6000fd5b505050506040513d6020811015610da257600080fd5b8101908080519060200190929190505050111515610dbf57600080fd5b5b610dc8610a0e565b80610e755750610dd66130f0565b73ffffffffffffffffffffffffffffffffffffffff16638bc865fd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050506040513d6020811015610e6357600080fd5b81019080805190602001909291905050505b1515610e8057600080fd5b610e8933613102565b9450610e9533866132b6565b935060008560000151111515610eaa57600080fd5b85856000015110151515610ebd57600080fd5b610ed48685600001516134c290919063ffffffff16565b846000018181525050610ef48685602001516134c290919063ffffffff16565b846020018181525050610f148685604001516134c290919063ffffffff16565b846040018181525050610f256134db565b73ffffffffffffffffffffffffffffffffffffffff166349da49bc336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b50505050610fe23386866134ed565b610fea6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561108457600080fd5b505af1158015611098573d6000803e3d6000fd5b505050506040513d60208110156110ae57600080fd5b810190808051906020019092919050505092506110c9610a29565b91506110d6603554611814565b8460200151101561138f5781831415611288576110f16130cc565b73ffffffffffffffffffffffffffffffffffffffff1663927bb668336111156130cc565b73ffffffffffffffffffffffffffffffffffffffff1663bcda6424336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156111af57600080fd5b505af11580156111c3573d6000803e3d6000fd5b505050506040513d60208110156111d957600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561126f57600080fd5b505af1158015611283573d6000803e3d6000fd5b505050505b6112a3846020015185604001516134c290919063ffffffff16565b8460400181815250506112b46130de565b73ffffffffffffffffffffffffffffffffffffffff166344d9bfe6336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561134e57600080fd5b505af1158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b81019080805190602001909291905050505061151d565b8183101561151c5761139f6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663863eb74a33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b505050506114616130cc565b73ffffffffffffffffffffffffffffffffffffffff1663927bb66833846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b505050505b5b6115256130de565b73ffffffffffffffffffffffffffffffffffffffff1663ad5c464733866000015187602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156115d757600080fd5b505af11580156115eb573d6000803e3d6000fd5b505050506115f76130de565b73ffffffffffffffffffffffffffffffffffffffff16631538e68c85604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561166957600080fd5b505af115801561167d573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561174657600080fd5b505af115801561175a573d6000803e3d6000fd5b505050506040513d602081101561177057600080fd5b8101908080519060200190929190505050151561178c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f854445a9a1b2b97212d606c21f3640b8b15b514332fc52b957f9c93125a274a4878660200151604051808381526020018281526020019250505060405180910390a2505050505050565b607260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061181e612ece565b73ffffffffffffffffffffffffffffffffffffffff1663734c1168836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561189457600080fd5b505af11580156118a8573d6000803e3d6000fd5b505050506040513d60208110156118be57600080fd5b81019080805190602001909291905050509050919050565b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119066130f0565b73ffffffffffffffffffffffffffffffffffffffff16638bc865fd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b505050506040513d602081101561199357600080fd5b810190808051906020019092919050505015905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119d861464e565b6119e06130de565b73ffffffffffffffffffffffffffffffffffffffff1663f01a13e1336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611a7a57600080fd5b505af1158015611a8e573d6000803e3d6000fd5b505050506040513d6020811015611aa457600080fd5b8101908080519060200190929190505050151515611b2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616c72656164792072656465656d65640000000000000000000000000000000081525060200191505060405180910390fd5b6001611b34610a29565b03611b3d6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663bd695d21336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611bd757600080fd5b505af1158015611beb573d6000803e3d6000fd5b505050506040513d6020811015611c0157600080fd5b8101908080519060200190929190505050141515611c87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72657075746174696f6e206e6f7420757064617465640000000000000000000081525060200191505060405180910390fd5b611c8f6130de565b73ffffffffffffffffffffffffffffffffffffffff166303cc89b4336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611d2957600080fd5b505af1158015611d3d573d6000803e3d6000fd5b50505050611d49613ec5565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d6833611d70606854611814565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b158015611df457600080fd5b505af1158015611e08573d6000803e3d6000fd5b505050506040513d6040811015611e1e57600080fd5b8101908080519060200190929190805190602001909291905050505050611e4433613102565b9050611e513382836134ed565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333060016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611f4b57600080fd5b505af1158015611f5f573d6000803e3d6000fd5b505050506040513d6020811015611f7557600080fd5b81019080805190602001909291905050501515611f9157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f212ab1ff1ffcea0692d08ce958ff341c42bca858661e7811a8bd71e5d7fcba4260405160405180910390a250565b6000611fe1613ed7565b73ffffffffffffffffffffffffffffffffffffffff1663d8d50179836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505061014060405180830381600087803b15801561205857600080fd5b505af115801561206c573d6000803e3d6000fd5b505050506040513d61014081101561208357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192939495969798509091929394959697509091929394959650909192939495509091929394509091929350909192509091505080915050919050565b6000612136610a29565b61213e6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156121d857600080fd5b505af11580156121ec573d6000803e3d6000fd5b505050506040513d602081101561220257600080fd5b81019080805190602001909291905050501480156123065750612226603654611814565b61222e6130de565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a27846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156122c857600080fd5b505af11580156122dc573d6000803e3d6000fd5b505050506040513d60208110156122f257600080fd5b810190808051906020019092919050505010155b80156123f85750612318603754611814565b612320613ec5565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e2846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156123ba57600080fd5b505af11580156123ce573d6000803e3d6000fd5b505050506040513d60208110156123e457600080fd5b810190808051906020019092919050505010155b9050919050565b607360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61242d61464e565b61243561464e565b6000806000612442610a29565b600181111561250b5760006124556130cc565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156124c357600080fd5b505af11580156124d7573d6000803e3d6000fd5b505050506040513d60208110156124ed57600080fd5b810190808051906020019092919050505011151561250a57600080fd5b5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561254557600080fd5b61254e33613102565b955061255a33876132b6565b945060009350600087111561261d57612571613ee9565b73ffffffffffffffffffffffffffffffffffffffff16630b3b1595886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156125df57600080fd5b505af11580156125f3573d6000803e3d6000fd5b505050506040513d602081101561260957600080fd5b810190808051906020019092919050505093505b612634878660000151613efb90919063ffffffff16565b856000018181525050612654848660200151613efb90919063ffffffff16565b856020018181525050612674848660400151613efb90919063ffffffff16565b8560400181815250506126856134db565b73ffffffffffffffffffffffffffffffffffffffff166349da49bc336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b5050505061273f6130de565b73ffffffffffffffffffffffffffffffffffffffff1663ad5c464733876000015188602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156127f157600080fd5b505af1158015612805573d6000803e3d6000fd5b505050506128143387876134ed565b61281c6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156128b657600080fd5b505af11580156128ca573d6000803e3d6000fd5b505050506040513d60208110156128e057600080fd5b810190808051906020019092919050505092506128fb610a29565b9150612908603554611814565b8560200151101515612b975761291c6130de565b73ffffffffffffffffffffffffffffffffffffffff1663e41b4c5c336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156129b657600080fd5b505af11580156129ca573d6000803e3d6000fd5b505050506040513d60208110156129e057600080fd5b81019080805190602001909291905050505081831015612b7f57612a026130cc565b73ffffffffffffffffffffffffffffffffffffffff1663863eb74a33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612aa457600080fd5b505af1158015612ab8573d6000803e3d6000fd5b50505050612ac46130cc565b73ffffffffffffffffffffffffffffffffffffffff1663927bb66833846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612b6657600080fd5b505af1158015612b7a573d6000803e3d6000fd5b505050505b6000831415612b9257612b9133613f17565b5b612c9a565b612bb2856020015186604001516134c290919063ffffffff16565b856040018181525050612bc36130de565b73ffffffffffffffffffffffffffffffffffffffff166344d9bfe6336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505050506040513d6020811015612c8757600080fd5b8101908080519060200190929190505050505b612ca26130de565b73ffffffffffffffffffffffffffffffffffffffff16631538e68c86604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015612d1457600080fd5b505af1158015612d28573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308a6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612e2557600080fd5b505af1158015612e39573d6000803e3d6000fd5b505050506040513d6020811015612e4f57600080fd5b81019080805190602001909291905050501515612e6b57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f31234eaf60e5e9eb15f098a26504dfe889551da611f4f904c9031e8b52382050888760200151604051808381526020018281526020019250505060405180910390a250505050505050565b6000612edb602b546108ea565b905090565b6000612eea614588565b1515612ef557600080fd5b612f00603954611814565b612fb8612f0b6130f0565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612f6e57600080fd5b505af1158015612f82573d6000803e3d6000fd5b505050506040513d6020811015612f9857600080fd5b8101908080519060200190929190505050846134c290919063ffffffff16565b811515612fc157fe5b069050919050565b6000612fd3614588565b1515612fde57600080fd5b6130c560016130b7612ff1603954611814565b6130a9612ffc6130f0565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561305f57600080fd5b505af1158015613073573d6000803e3d6000fd5b505050506040513d602081101561308957600080fd5b8101908080519060200190929190505050876134c290919063ffffffff16565b61463890919063ffffffff16565b613efb90919063ffffffff16565b9050919050565b60006130d9602d546108ea565b905090565b60006130eb602c546108ea565b905090565b60006130fd6027546108ea565b905090565b61310a61464e565b6131126130de565b73ffffffffffffffffffffffffffffffffffffffff16635bdd2743836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b1580156131ab57600080fd5b505af11580156131bf573d6000803e3d6000fd5b505050506040513d60408110156131d557600080fd5b81019080805190602001909291908051906020019092919050505082600001836020018281525082815250505061320a6130de565b73ffffffffffffffffffffffffffffffffffffffff1663abed029a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561326d57600080fd5b505af1158015613281573d6000803e3d6000fd5b505050506040513d602081101561329757600080fd5b8101908080519060200190929190505050816040018181525050919050565b6132be61464e565b60008260200151826020018181525050826000015182600001818152505082604001518260400181815250506132f2610a29565b9050806132fd6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561339757600080fd5b505af11580156133ab573d6000803e3d6000fd5b505050506040513d60208110156133c157600080fd5b810190808051906020019092919050505010156134bb576133e0613ee9565b73ffffffffffffffffffffffffffffffffffffffff16630b3b159584600001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561345257600080fd5b505af1158015613466573d6000803e3d6000fd5b505050506040513d602081101561347c57600080fd5b81019080805190602001909291905050508260200181815250506134b182602001518360400151613efb90919063ffffffff16565b8260400181815250505b5092915050565b60008282111515156134d057fe5b818303905092915050565b60006134e8601b546108ea565b905090565b6000806134f8610a29565b6135006130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561359a57600080fd5b505af11580156135ae573d6000803e3d6000fd5b505050506040513d60208110156135c457600080fd5b81019080805190602001909291905050501491506135e06130de565b73ffffffffffffffffffffffffffffffffffffffff1663bf448a876040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561364357600080fd5b505af1158015613657573d6000803e3d6000fd5b505050506040513d602081101561366d57600080fd5b810190808051906020019092919050505090506001151561368c6130de565b73ffffffffffffffffffffffffffffffffffffffff166388954a6c876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561372657600080fd5b505af115801561373a573d6000803e3d6000fd5b505050506040513d602081101561375057600080fd5b810190808051906020019092919050505015151415613c3157613774603654611814565b8360200151108061386a575061378b603754611814565b613793613ec5565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e2876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561382d57600080fd5b505af1158015613841573d6000803e3d6000fd5b505050506040513d602081101561385757600080fd5b8101908080519060200190929190505050105b15613ac15760016138796130de565b73ffffffffffffffffffffffffffffffffffffffff1663e3bc96ba6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156138dc57600080fd5b505af11580156138f0573d6000803e3d6000fd5b505050506040513d602081101561390657600080fd5b8101908080519060200190929190505050118061392857506139266118fc565b155b151561393357600080fd5b61393b6130de565b73ffffffffffffffffffffffffffffffffffffffff1663f2388b42866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156139d557600080fd5b505af11580156139e9573d6000803e3d6000fd5b505050506040513d60208110156139ff57600080fd5b8101908080519060200190929190505050508115613abc57613a1f6130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613a518660200151846134c290919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613aa357600080fd5b505af1158015613ab7573d6000803e3d6000fd5b505050505b613c2c565b8115613b8657613acf6130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613b178560200151613b098860200151866134c290919063ffffffff16565b613efb90919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613b6957600080fd5b505af1158015613b7d573d6000803e3d6000fd5b50505050613c2b565b613b8e6130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613bc0856020015184613efb90919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613c1257600080fd5b505af1158015613c26573d6000803e3d6000fd5b505050505b5b613ebe565b613c3c603654611814565b836020015110158015613d355750613c55603754611814565b613c5d613ec5565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e2876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613cf757600080fd5b505af1158015613d0b573d6000803e3d6000fd5b505050506040513d6020811015613d2157600080fd5b810190808051906020019092919050505010155b15613ebd57613d426130de565b73ffffffffffffffffffffffffffffffffffffffff166303a996a1866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613ddc57600080fd5b505af1158015613df0573d6000803e3d6000fd5b505050506040513d6020811015613e0657600080fd5b810190808051906020019092919050505050613e206130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613e52856020015184613efb90919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613ea457600080fd5b505af1158015613eb8573d6000803e3d6000fd5b505050505b5b5050505050565b6000613ed26029546108ea565b905090565b6000613ee46025546108ea565b905090565b6000613ef66024546108ea565b905090565b60008183019050828110151515613f0e57fe5b80905092915050565b613f1f6130de565b73ffffffffffffffffffffffffffffffffffffffff16636d080338826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613fb957600080fd5b505af1158015613fcd573d6000803e3d6000fd5b505050506040513d6020811015613fe357600080fd5b810190808051906020019092919050505015613ffe57614585565b607260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aec2ccae826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156140bb57600080fd5b505af11580156140cf573d6000803e3d6000fd5b505050506040513d60208110156140e557600080fd5b8101908080519060200190929190505050156141f657614103613ec5565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d688261412a606f54611814565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b1580156141ae57600080fd5b505af11580156141c2573d6000803e3d6000fd5b505050506040513d60408110156141d857600080fd5b81019080805190602001909291908051906020019092919050505050505b607360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aec2ccae826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156142b357600080fd5b505af11580156142c7573d6000803e3d6000fd5b505050506040513d60208110156142dd57600080fd5b8101908080519060200190929190505050156143ee576142fb613ec5565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d6882614322606f54611814565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b1580156143a657600080fd5b505af11580156143ba573d6000803e3d6000fd5b505050506040513d60408110156143d057600080fd5b81019080805190602001909291908051906020019092919050505050505b6143f66130cc565b73ffffffffffffffffffffffffffffffffffffffff166312d9b9393361442d600161441f610a29565b6134c290919063ffffffff16565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156144b257600080fd5b505af11580156144c6573d6000803e3d6000fd5b505050506144d26130de565b73ffffffffffffffffffffffffffffffffffffffff16635515eb2c826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561456c57600080fd5b505af1158015614580573d6000803e3d6000fd5b505050505b50565b6000806145936130f0565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156145f657600080fd5b505af115801561460a573d6000803e3d6000fd5b505050506040513d602081101561462057600080fd5b81019080805190602001909291905050501415905090565b6000818381151561464557fe5b04905092915050565b60606040519081016040528060008152602001600081526020016000815250905600a165627a7a72305820b13e94e1d3e3ea0b91700e205d9b16d2a9fc8d3ef3b638bd819879f797b7ae0c0029",
  "deployedBytecode": "0x608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec1461013857806314efcd3c1461018f5780631b1e53ef146101bc5780631d8ccd04146102135780633943380c146102845780633f83acff146102b7578063560a25ea14610328578063685330601461035357806374cd7f6d146103825780637d6fed80146103995780637f6a26b6146103c8578063929066f5146103f357806393ddad081461044e578063963cdbfd1461049b5780639bd71354146104c8578063b1e2b9dd1461051f578063be6999c414610564578063d70d9358146105bb578063db4ecbc1146105ea578063dda249f514610641578063f94f0f3314610658578063fa6f3936146106a1578063fbc28462146106fc575b600080fd5b34801561014457600080fd5b5061014d610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019b57600080fd5b506101ba60048036038101908080359060200190929190505050610778565b005b3480156101c857600080fd5b506101d16107fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021f57600080fd5b506102426004803603810190808035600019169060200190929190505050610822565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029057600080fd5b506102996108e4565b60405180826000191660001916815260200191505060405180910390f35b3480156102c357600080fd5b506102e660048036038101908080356000191690602001909291905050506108ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561033457600080fd5b5061033d6109c6565b6040518082815260200191505060405180910390f35b34801561035f57600080fd5b506103686109d6565b604051808215151515815260200191505060405180910390f35b34801561038e57600080fd5b50610397610a02565b005b3480156103a557600080fd5b506103ae610a0e565b604051808215151515815260200191505060405180910390f35b3480156103d457600080fd5b506103dd610a29565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610434600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a39565b604051808215151515815260200191505060405180910390f35b34801561045a57600080fd5b5061047d6004803603810190808035600019169060200190929190505050610c1a565b60405180826000191660001916815260200191505060405180910390f35b3480156104a757600080fd5b506104c660048036038101908080359060200190929190505050610cdc565b005b3480156104d457600080fd5b506104dd6117ee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052b57600080fd5b5061054e6004803603810190808035600019169060200190929190505050611814565b6040518082815260200191505060405180910390f35b34801561057057600080fd5b506105796118d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c757600080fd5b506105d06118fc565b604051808215151515815260200191505060405180910390f35b3480156105f657600080fd5b506105ff6119aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064d57600080fd5b506106566119d0565b005b34801561066457600080fd5b506106876004803603810190808035600019169060200190929190505050611fd7565b604051808215151515815260200191505060405180910390f35b3480156106ad57600080fd5b506106e2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061212c565b604051808215151515815260200191505060405180910390f35b34801561070857600080fd5b506107116123ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000811115156107f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f7a65726f20616d6f756e7400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6107f981612425565b50565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061082c612ece565b73ffffffffffffffffffffffffffffffffffffffff1663e6b39eab836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050506040513d60208110156108cc57600080fd5b81019080805190602001909291905050509050919050565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561098457600080fd5b505af1158015610998573d6000803e3d6000fd5b505050506040513d60208110156109ae57600080fd5b81019080805190602001909291905050509050919050565b60006109d142612ee0565b905090565b60006109e06118fc565b80156109fd57506109f2603854611814565b6109fa6109c6565b10155b905090565b610a0c6000612425565b565b6000610a1b603854611814565b610a236109c6565b10905090565b6000610a3442612fc9565b905090565b6000610a43610a29565b610a4b6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ae557600080fd5b505af1158015610af9573d6000803e3d6000fd5b505050506040513d6020811015610b0f57600080fd5b8101908080519060200190929190505050148015610c135750610b33603554611814565b610b3b6130de565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a27846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b505050506040513d6020811015610bff57600080fd5b810190808051906020019092919050505010155b9050919050565b6000610c24612ece565b73ffffffffffffffffffffffffffffffffffffffff1663c0a8405d836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610c9a57600080fd5b505af1158015610cae573d6000803e3d6000fd5b505050506040513d6020811015610cc457600080fd5b81019080805190602001909291905050509050919050565b610ce461464e565b610cec61464e565b600080610cf7610a29565b6001811115610dc0576000610d0a6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610d7857600080fd5b505af1158015610d8c573d6000803e3d6000fd5b505050506040513d6020811015610da257600080fd5b8101908080519060200190929190505050111515610dbf57600080fd5b5b610dc8610a0e565b80610e755750610dd66130f0565b73ffffffffffffffffffffffffffffffffffffffff16638bc865fd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050506040513d6020811015610e6357600080fd5b81019080805190602001909291905050505b1515610e8057600080fd5b610e8933613102565b9450610e9533866132b6565b935060008560000151111515610eaa57600080fd5b85856000015110151515610ebd57600080fd5b610ed48685600001516134c290919063ffffffff16565b846000018181525050610ef48685602001516134c290919063ffffffff16565b846020018181525050610f148685604001516134c290919063ffffffff16565b846040018181525050610f256134db565b73ffffffffffffffffffffffffffffffffffffffff166349da49bc336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b50505050610fe23386866134ed565b610fea6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561108457600080fd5b505af1158015611098573d6000803e3d6000fd5b505050506040513d60208110156110ae57600080fd5b810190808051906020019092919050505092506110c9610a29565b91506110d6603554611814565b8460200151101561138f5781831415611288576110f16130cc565b73ffffffffffffffffffffffffffffffffffffffff1663927bb668336111156130cc565b73ffffffffffffffffffffffffffffffffffffffff1663bcda6424336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156111af57600080fd5b505af11580156111c3573d6000803e3d6000fd5b505050506040513d60208110156111d957600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561126f57600080fd5b505af1158015611283573d6000803e3d6000fd5b505050505b6112a3846020015185604001516134c290919063ffffffff16565b8460400181815250506112b46130de565b73ffffffffffffffffffffffffffffffffffffffff166344d9bfe6336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561134e57600080fd5b505af1158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b81019080805190602001909291905050505061151d565b8183101561151c5761139f6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663863eb74a33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b505050506114616130cc565b73ffffffffffffffffffffffffffffffffffffffff1663927bb66833846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b505050505b5b6115256130de565b73ffffffffffffffffffffffffffffffffffffffff1663ad5c464733866000015187602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156115d757600080fd5b505af11580156115eb573d6000803e3d6000fd5b505050506115f76130de565b73ffffffffffffffffffffffffffffffffffffffff16631538e68c85604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561166957600080fd5b505af115801561167d573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561174657600080fd5b505af115801561175a573d6000803e3d6000fd5b505050506040513d602081101561177057600080fd5b8101908080519060200190929190505050151561178c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f854445a9a1b2b97212d606c21f3640b8b15b514332fc52b957f9c93125a274a4878660200151604051808381526020018281526020019250505060405180910390a2505050505050565b607260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061181e612ece565b73ffffffffffffffffffffffffffffffffffffffff1663734c1168836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561189457600080fd5b505af11580156118a8573d6000803e3d6000fd5b505050506040513d60208110156118be57600080fd5b81019080805190602001909291905050509050919050565b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119066130f0565b73ffffffffffffffffffffffffffffffffffffffff16638bc865fd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b505050506040513d602081101561199357600080fd5b810190808051906020019092919050505015905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119d861464e565b6119e06130de565b73ffffffffffffffffffffffffffffffffffffffff1663f01a13e1336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611a7a57600080fd5b505af1158015611a8e573d6000803e3d6000fd5b505050506040513d6020811015611aa457600080fd5b8101908080519060200190929190505050151515611b2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616c72656164792072656465656d65640000000000000000000000000000000081525060200191505060405180910390fd5b6001611b34610a29565b03611b3d6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663bd695d21336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611bd757600080fd5b505af1158015611beb573d6000803e3d6000fd5b505050506040513d6020811015611c0157600080fd5b8101908080519060200190929190505050141515611c87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72657075746174696f6e206e6f7420757064617465640000000000000000000081525060200191505060405180910390fd5b611c8f6130de565b73ffffffffffffffffffffffffffffffffffffffff166303cc89b4336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611d2957600080fd5b505af1158015611d3d573d6000803e3d6000fd5b50505050611d49613ec5565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d6833611d70606854611814565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b158015611df457600080fd5b505af1158015611e08573d6000803e3d6000fd5b505050506040513d6040811015611e1e57600080fd5b8101908080519060200190929190805190602001909291905050505050611e4433613102565b9050611e513382836134ed565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333060016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611f4b57600080fd5b505af1158015611f5f573d6000803e3d6000fd5b505050506040513d6020811015611f7557600080fd5b81019080805190602001909291905050501515611f9157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f212ab1ff1ffcea0692d08ce958ff341c42bca858661e7811a8bd71e5d7fcba4260405160405180910390a250565b6000611fe1613ed7565b73ffffffffffffffffffffffffffffffffffffffff1663d8d50179836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826000191660001916815260200191505061014060405180830381600087803b15801561205857600080fd5b505af115801561206c573d6000803e3d6000fd5b505050506040513d61014081101561208357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192939495969798509091929394959697509091929394959650909192939495509091929394509091929350909192509091505080915050919050565b6000612136610a29565b61213e6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156121d857600080fd5b505af11580156121ec573d6000803e3d6000fd5b505050506040513d602081101561220257600080fd5b81019080805190602001909291905050501480156123065750612226603654611814565b61222e6130de565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a27846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156122c857600080fd5b505af11580156122dc573d6000803e3d6000fd5b505050506040513d60208110156122f257600080fd5b810190808051906020019092919050505010155b80156123f85750612318603754611814565b612320613ec5565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e2846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156123ba57600080fd5b505af11580156123ce573d6000803e3d6000fd5b505050506040513d60208110156123e457600080fd5b810190808051906020019092919050505010155b9050919050565b607360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61242d61464e565b61243561464e565b6000806000612442610a29565b600181111561250b5760006124556130cc565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156124c357600080fd5b505af11580156124d7573d6000803e3d6000fd5b505050506040513d60208110156124ed57600080fd5b810190808051906020019092919050505011151561250a57600080fd5b5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561254557600080fd5b61254e33613102565b955061255a33876132b6565b945060009350600087111561261d57612571613ee9565b73ffffffffffffffffffffffffffffffffffffffff16630b3b1595886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156125df57600080fd5b505af11580156125f3573d6000803e3d6000fd5b505050506040513d602081101561260957600080fd5b810190808051906020019092919050505093505b612634878660000151613efb90919063ffffffff16565b856000018181525050612654848660200151613efb90919063ffffffff16565b856020018181525050612674848660400151613efb90919063ffffffff16565b8560400181815250506126856134db565b73ffffffffffffffffffffffffffffffffffffffff166349da49bc336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b5050505061273f6130de565b73ffffffffffffffffffffffffffffffffffffffff1663ad5c464733876000015188602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156127f157600080fd5b505af1158015612805573d6000803e3d6000fd5b505050506128143387876134ed565b61281c6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156128b657600080fd5b505af11580156128ca573d6000803e3d6000fd5b505050506040513d60208110156128e057600080fd5b810190808051906020019092919050505092506128fb610a29565b9150612908603554611814565b8560200151101515612b975761291c6130de565b73ffffffffffffffffffffffffffffffffffffffff1663e41b4c5c336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156129b657600080fd5b505af11580156129ca573d6000803e3d6000fd5b505050506040513d60208110156129e057600080fd5b81019080805190602001909291905050505081831015612b7f57612a026130cc565b73ffffffffffffffffffffffffffffffffffffffff1663863eb74a33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612aa457600080fd5b505af1158015612ab8573d6000803e3d6000fd5b50505050612ac46130cc565b73ffffffffffffffffffffffffffffffffffffffff1663927bb66833846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612b6657600080fd5b505af1158015612b7a573d6000803e3d6000fd5b505050505b6000831415612b9257612b9133613f17565b5b612c9a565b612bb2856020015186604001516134c290919063ffffffff16565b856040018181525050612bc36130de565b73ffffffffffffffffffffffffffffffffffffffff166344d9bfe6336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505050506040513d6020811015612c8757600080fd5b8101908080519060200190929190505050505b612ca26130de565b73ffffffffffffffffffffffffffffffffffffffff16631538e68c86604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015612d1457600080fd5b505af1158015612d28573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308a6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612e2557600080fd5b505af1158015612e39573d6000803e3d6000fd5b505050506040513d6020811015612e4f57600080fd5b81019080805190602001909291905050501515612e6b57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f31234eaf60e5e9eb15f098a26504dfe889551da611f4f904c9031e8b52382050888760200151604051808381526020018281526020019250505060405180910390a250505050505050565b6000612edb602b546108ea565b905090565b6000612eea614588565b1515612ef557600080fd5b612f00603954611814565b612fb8612f0b6130f0565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612f6e57600080fd5b505af1158015612f82573d6000803e3d6000fd5b505050506040513d6020811015612f9857600080fd5b8101908080519060200190929190505050846134c290919063ffffffff16565b811515612fc157fe5b069050919050565b6000612fd3614588565b1515612fde57600080fd5b6130c560016130b7612ff1603954611814565b6130a9612ffc6130f0565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561305f57600080fd5b505af1158015613073573d6000803e3d6000fd5b505050506040513d602081101561308957600080fd5b8101908080519060200190929190505050876134c290919063ffffffff16565b61463890919063ffffffff16565b613efb90919063ffffffff16565b9050919050565b60006130d9602d546108ea565b905090565b60006130eb602c546108ea565b905090565b60006130fd6027546108ea565b905090565b61310a61464e565b6131126130de565b73ffffffffffffffffffffffffffffffffffffffff16635bdd2743836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b1580156131ab57600080fd5b505af11580156131bf573d6000803e3d6000fd5b505050506040513d60408110156131d557600080fd5b81019080805190602001909291908051906020019092919050505082600001836020018281525082815250505061320a6130de565b73ffffffffffffffffffffffffffffffffffffffff1663abed029a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561326d57600080fd5b505af1158015613281573d6000803e3d6000fd5b505050506040513d602081101561329757600080fd5b8101908080519060200190929190505050816040018181525050919050565b6132be61464e565b60008260200151826020018181525050826000015182600001818152505082604001518260400181815250506132f2610a29565b9050806132fd6130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561339757600080fd5b505af11580156133ab573d6000803e3d6000fd5b505050506040513d60208110156133c157600080fd5b810190808051906020019092919050505010156134bb576133e0613ee9565b73ffffffffffffffffffffffffffffffffffffffff16630b3b159584600001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561345257600080fd5b505af1158015613466573d6000803e3d6000fd5b505050506040513d602081101561347c57600080fd5b81019080805190602001909291905050508260200181815250506134b182602001518360400151613efb90919063ffffffff16565b8260400181815250505b5092915050565b60008282111515156134d057fe5b818303905092915050565b60006134e8601b546108ea565b905090565b6000806134f8610a29565b6135006130cc565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561359a57600080fd5b505af11580156135ae573d6000803e3d6000fd5b505050506040513d60208110156135c457600080fd5b81019080805190602001909291905050501491506135e06130de565b73ffffffffffffffffffffffffffffffffffffffff1663bf448a876040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561364357600080fd5b505af1158015613657573d6000803e3d6000fd5b505050506040513d602081101561366d57600080fd5b810190808051906020019092919050505090506001151561368c6130de565b73ffffffffffffffffffffffffffffffffffffffff166388954a6c876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561372657600080fd5b505af115801561373a573d6000803e3d6000fd5b505050506040513d602081101561375057600080fd5b810190808051906020019092919050505015151415613c3157613774603654611814565b8360200151108061386a575061378b603754611814565b613793613ec5565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e2876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561382d57600080fd5b505af1158015613841573d6000803e3d6000fd5b505050506040513d602081101561385757600080fd5b8101908080519060200190929190505050105b15613ac15760016138796130de565b73ffffffffffffffffffffffffffffffffffffffff1663e3bc96ba6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156138dc57600080fd5b505af11580156138f0573d6000803e3d6000fd5b505050506040513d602081101561390657600080fd5b8101908080519060200190929190505050118061392857506139266118fc565b155b151561393357600080fd5b61393b6130de565b73ffffffffffffffffffffffffffffffffffffffff1663f2388b42866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156139d557600080fd5b505af11580156139e9573d6000803e3d6000fd5b505050506040513d60208110156139ff57600080fd5b8101908080519060200190929190505050508115613abc57613a1f6130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613a518660200151846134c290919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613aa357600080fd5b505af1158015613ab7573d6000803e3d6000fd5b505050505b613c2c565b8115613b8657613acf6130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613b178560200151613b098860200151866134c290919063ffffffff16565b613efb90919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613b6957600080fd5b505af1158015613b7d573d6000803e3d6000fd5b50505050613c2b565b613b8e6130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613bc0856020015184613efb90919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613c1257600080fd5b505af1158015613c26573d6000803e3d6000fd5b505050505b5b613ebe565b613c3c603654611814565b836020015110158015613d355750613c55603754611814565b613c5d613ec5565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e2876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613cf757600080fd5b505af1158015613d0b573d6000803e3d6000fd5b505050506040513d6020811015613d2157600080fd5b810190808051906020019092919050505010155b15613ebd57613d426130de565b73ffffffffffffffffffffffffffffffffffffffff166303a996a1866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613ddc57600080fd5b505af1158015613df0573d6000803e3d6000fd5b505050506040513d6020811015613e0657600080fd5b810190808051906020019092919050505050613e206130de565b73ffffffffffffffffffffffffffffffffffffffff166391baa144613e52856020015184613efb90919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613ea457600080fd5b505af1158015613eb8573d6000803e3d6000fd5b505050505b5b5050505050565b6000613ed26029546108ea565b905090565b6000613ee46025546108ea565b905090565b6000613ef66024546108ea565b905090565b60008183019050828110151515613f0e57fe5b80905092915050565b613f1f6130de565b73ffffffffffffffffffffffffffffffffffffffff16636d080338826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613fb957600080fd5b505af1158015613fcd573d6000803e3d6000fd5b505050506040513d6020811015613fe357600080fd5b810190808051906020019092919050505015613ffe57614585565b607260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aec2ccae826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156140bb57600080fd5b505af11580156140cf573d6000803e3d6000fd5b505050506040513d60208110156140e557600080fd5b8101908080519060200190929190505050156141f657614103613ec5565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d688261412a606f54611814565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b1580156141ae57600080fd5b505af11580156141c2573d6000803e3d6000fd5b505050506040513d60408110156141d857600080fd5b81019080805190602001909291908051906020019092919050505050505b607360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aec2ccae826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156142b357600080fd5b505af11580156142c7573d6000803e3d6000fd5b505050506040513d60208110156142dd57600080fd5b8101908080519060200190929190505050156143ee576142fb613ec5565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d6882614322606f54611814565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b1580156143a657600080fd5b505af11580156143ba573d6000803e3d6000fd5b505050506040513d60408110156143d057600080fd5b81019080805190602001909291908051906020019092919050505050505b6143f66130cc565b73ffffffffffffffffffffffffffffffffffffffff166312d9b9393361442d600161441f610a29565b6134c290919063ffffffff16565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156144b257600080fd5b505af11580156144c6573d6000803e3d6000fd5b505050506144d26130de565b73ffffffffffffffffffffffffffffffffffffffff16635515eb2c826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561456c57600080fd5b505af1158015614580573d6000803e3d6000fd5b505050505b50565b6000806145936130f0565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156145f657600080fd5b505af115801561460a573d6000803e3d6000fd5b505050506040513d602081101561462057600080fd5b81019080805190602001909291905050501415905090565b6000818381151561464557fe5b04905092915050565b60606040519081016040528060008152602001600081526020016000815250905600a165627a7a72305820b13e94e1d3e3ea0b91700e205d9b16d2a9fc8d3ef3b638bd819879f797b7ae0c0029",
  "sourceMap": "396:20546:16:-;;;177:3:3;169:12;;147:34;;;;;;;219:3;187:36;;;;;;;;;;;;;;;;;;;;230:65;;;;;;;;301:53;;;;;;;;360:61;;;;;;;;427:57;;;;;;;;490:55;;;;;;;;551:59;;;;;;;;643:1;617:27;;677:1;650:28;;713:1;684:30;;758:1;721:38;;800:1;765:36;;843:1;807:37;;851:52;;;;;;;;909:66;;;;;;;;981:80;;;;;;;;1097:28;;;;;;;;1131:62;;;;;;;;1199:56;;;;;;;;1261:42;;;;;;;;1309:56;;;;;;;;1371:65;;;;;;;;1442:46;;;;;;;;1494:60;;;;;;;;1560:66;;;;;;;;1632:40;;;;;;;;1678:60;;;;;;;;1744:54;;;;;;;;1804:52;;;;;;;;1888:46;;;;;;;;1940:54;;;;;;;;2000:60;;;;;;;;2066:66;;;;;;;;2164:44;;;;;;;;2214:60;;;;;;;;2280;;;;;;;;2346:62;;;;;;;;2414:58;;;;;;;;2478:60;;;;;;;;2544:58;;;;;;;;2608:56;;;;;;;;2670:60;;;;;;;;2736:70;;;;;;;;2812:78;;;;;;;;2897:36;;;;;;;;2939;;;;;;;;2981:40;;;;;;;;3047:1;3028:20;;;;;;;;;;;;;;;;;;;;3077:1;3054:24;;;;;;;;;;;;;;;;;;;;3103:1;3084:20;;;;;;;;;;;;;;;;;;;;3135:1;3110:26;;;;;;;;;;;;;;;;;;;;3170:7;3143:34;;3184:57;;;;;;;;3247:62;;;;;;;;3315:76;;;;;;;;3398:64;;;;;;;;3468:52;;;;;;;;3526:58;;;;;;;;3590:56;;;;;;;;3652:67;;;;;;;;3725:65;;;;;;;;3797:84;;;;;;;;3887:88;;;;;;;;3981:87;;;;;;;;4074:91;;;;;;;;4171:84;;;;;;;;4261:88;;;;;;;;4355:87;;;;;;;;4448:91;;;;;;;;4545:87;;;;;;;;4638:91;;;;;;;;4736:62;;;;;;;;4804:66;;;;;;;;4876:64;;;;;;;;4946:68;;;;;;;;5021:51;;;;;;;;5078:76;;;;;;;;5160:75;;;;;;;;5242:65;;;;;;;;5313:79;;;;;;;;5398:89;;;;;;;;5494:68;;;;;;;;5568:56;;;;;;;;5630:72;;;;;;;;5740:91;;;;;;;;5838:72;;;;;;;;5916:76;;;;;;;;5999:78;;;;;;;;6083:76;;;;;;;;6166:73;;;;;;;;6245:77;;;;;;;;6329;;;;;;;;6412:81;;;;;;;;6500:79;;;;;;;;6585:75;;;;;;;;6667:74;;;;;;;;6747;;;;;;;;6828:83;;;;;;;;6917:86;;;;;;;;7009;;;;;;;;7102:67;;;;;;;;7175;;;;;;;;7249:63;;;;;;;;7319:77;;;;;;;;7403:66;;;;;;;;7476:71;;;;;;;;7554:72;;;;;;;;7632:78;;;;;;;;7716:82;;;;;;;;7805:62;;;;;;;;7873:68;;;;;;;;2066:394:16;8:9:-1;5:2;;;30:1;27;20:12;5:2;2066:394:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:43;2264:26;;2292:9;2259:4;;;:43;;;:::i;:::-;2251:52;;;;;;;;2324:9;2313:8;;:20;;;;;;;;;;;;;;;;;;2359:14;2343:13;;:30;;;;;;;;;;;;;;;;;;2399:14;2383:13;;:30;;;;;;;;;;;;;;;;;;2439:14;2423:13;;:30;;;;;;;;;;;;;;;;;;2066:394;;;;;396:20546;;1530:450:67;1617:13;1640:15;1675:9;1658:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:44:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:44:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1658:44:67;;;;;;;;;;;;;;;;1640:62;;1726:5;1712:19;;:10;:19;;;1708:268;;;1768:4;1741:16;;:32;;;;;;;;;;;;;;;;;;1792:9;1781:8;;:20;;;;;;;;;;;;;;;;;;1815:4;1809:3;:10;;;;;;;1852:8;;;;;;;;;;;1835:49;;;1885:3;;1890:16;;;;;;;;;;;1835:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1835:72:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1835:72:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1835:72:67;;;;;;;;;;;;;;;;1827:81;;;;;;;;1927:4;1916:15;;1708:268;;;1964:5;1953:16;;1708:268;1530:450;;;;;:::o;396:20546:16:-;;;;;;;",
  "deployedSourceMap": "396:20546:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:23:67;;;;;;;;;;;;;;;;;;;;;;;;;;;4787:127:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4787:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;703:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;703:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;6247:195:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6247:195:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;264:18:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:18:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:179:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4809:147:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4809:147:2;;;;;;;;;;;;;;;;;;;;;;;1759:239;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1759:239:2;;;;;;;;;;;;;;;;;;;;;;;;;;;13327:95:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13327:95:16;;;;;;1283:201:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1283:201:2;;;;;;;;;;;;;;;;;;;;;;;;;;;3130:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3130:159:2;;;;;;;;;;;;;;;;;;;;;;;6728:311:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6728:311:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6448:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6448:191:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9563:3400:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9563:3400:16;;;;;;;;;;;;;;;;;;;;;;;;;;928:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;928:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;7327:189:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7327:189:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;674:23:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:23:16;;;;;;;;;;;;;;;;;;;;;;;;;;;834:173:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;834:173:2;;;;;;;;;;;;;;;;;;;;;;;;;;;344:31:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:31:67;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:1428:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3353:1428:16;;;;;;605:208:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;605:208:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7126:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7126:431:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1153:28:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1153:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23:67;;;;;;;;;;;;;:::o;4787:127:16:-;4856:1;4846:7;:11;4838:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4883:24;4899:7;4883:15;:24::i;:::-;4787:127;:::o;703:28::-;;;;;;;;;;;;;:::o;6247:195:1:-;6338:20;6389:19;:17;:19::i;:::-;:34;;;6424:10;6389:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6389:46:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6389:46:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6389:46:1;;;;;;;;;;;;;;;;6374:61;;6247:195;;;:::o;264:18:67:-;;;;:::o;2380:179::-;2470:17;2526:8;;;;;;;;;;;2509:39;;;2549:4;2509:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:45:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:45:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:45:67;;;;;;;;;;;;;;;;2497:57;;2380:179;;;:::o;4809:147:2:-;4886:17;4931:18;4945:3;4931:13;:18::i;:::-;4919:30;;4809:147;:::o;1759:239::-;1827:17;1887:18;:16;:18::i;:::-;:104;;;;;1947:44;1961:29;;1947:13;:44::i;:::-;1921:22;:20;:22::i;:::-;:70;;1887:104;1860:131;;1759:239;:::o;13327:95:16:-;13397:18;13413:1;13397:15;:18::i;:::-;13327:95::o;1283:201:2:-;1354:20;1433:44;1447:29;;1433:13;:44::i;:::-;1408:22;:20;:22::i;:::-;:69;1390:87;;1283:201;:::o;3130:159::-;3206:22;3261:21;3278:3;3261:16;:21::i;:::-;3244:38;;3130:159;:::o;6728:311:1:-;6811:8;6908:22;:20;:22::i;:::-;6854:19;:17;:19::i;:::-;:43;;;6898:5;6854:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6854:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6854:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6854:50:1;;;;;;;;;;;;;;;;:76;6853:179;;;;;6991:40;7005:25;;6991:13;:40::i;:::-;6948:17;:15;:17::i;:::-;:32;;;6981:5;6948:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6948:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6948:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6948:39:1;;;;;;;;;;;;;;;;:83;;6853:179;6835:197;;6728:311;;;:::o;6448:191::-;6537:20;6588:19;:17;:19::i;:::-;:32;;;6621:10;6588:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6588:44:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6588:44:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6588:44:1;;;;;;;;;;;;;;;;6573:59;;6448:191;;;:::o;9563:3400:16:-;9843:29;;:::i;:::-;9916:32;;:::i;:::-;10985;11085:23;9643:22;:20;:22::i;:::-;2314:1:2;2297:14;:18;2293:120;;;2400:1;2339:19;:17;:19::i;:::-;:42;;;2382:14;2339:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2339:58:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2339:58:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2339:58:2;;;;;;;;;;;;;;;;:62;2331:71;;;;;;;;2293:120;9689:16:16;:14;:16::i;:::-;:60;;;;9709:19;:17;:19::i;:::-;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9709:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9709:40:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9709:40:16;;;;;;;;;;;;;;;;9689:60;9681:69;;;;;;;;9875:31;9895:10;9875:19;:31::i;:::-;9843:63;;9951:34;9967:10;9979:5;9951:15;:34::i;:::-;9916:69;;10277:1;10249:5;:25;;;:29;10241:38;;;;;;;;10327:7;10298:5;:25;;;:36;;10290:45;;;;;;;;10376:41;10409:7;10376:8;:28;;;:32;;:41;;;;:::i;:::-;10345:8;:28;;:72;;;;;10457:40;10489:7;10457:8;:27;;;:31;;:40;;;;:::i;:::-;10427:8;:27;;:70;;;;;10538:41;10571:7;10538:8;:28;;;:32;;:41;;;;:::i;:::-;10507:8;:28;;:72;;;;;10763:19;:17;:19::i;:::-;:62;;;10826:10;10763:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10763:74:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10763:74:16;;;;10923:51;10946:10;10958:5;10965:8;10923:22;:51::i;:::-;11020:19;:17;:19::i;:::-;:43;;;11064:10;11020:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11020:55:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11020:55:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11020:55:16;;;;;;;;;;;;;;;;10985:90;;11111:22;:20;:22::i;:::-;11085:48;;11178:40;11192:25;;11178:13;:40::i;:::-;11148:8;:27;;;:70;11144:1470;;;11498:15;11470:24;:43;11466:208;;;11533:19;:17;:19::i;:::-;:49;;;11583:10;11595:19;:17;:19::i;:::-;:51;;;11647:10;11595:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11595:63:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11595:63:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11595:63:16;;;;;;;;;;;;;;;;11533:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11533:126:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11533:126:16;;;;11466:208;11870:61;11903:8;:27;;;11870:8;:28;;;:32;;:61;;;;:::i;:::-;11839:8;:28;;:92;;;;;11946:17;:15;:17::i;:::-;:43;;;11990:10;11946:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11946:55:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11946:55:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11946:55:16;;;;;;;;;;;;;;;;;11144:1470;;;12238:15;12211:24;:42;12207:273;;;12273:19;:17;:19::i;:::-;:57;;;12331:10;12343:24;12273:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12273:95:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12273:95:16;;;;12386:19;:17;:19::i;:::-;:49;;;12436:10;12448:15;12386:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12386:78:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12386:78:16;;;;12207:273;11144:1470;12624:17;:15;:17::i;:::-;:36;;;12661:10;12673:8;:28;;;12703:8;:27;;;12624:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12624:107:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12624:107:16;;;;12741:17;:15;:17::i;:::-;:43;;;12785:8;:28;;;12741:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12741:73:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12741:73:16;;;;12839:8;;;;;;;;;;;12833:24;;;12858:10;12870:7;12833:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12833:45:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12833:45:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12833:45:16;;;;;;;;;;;;;;;;12825:54;;;;;;;;12907:10;12895:61;;;12919:7;12928:8;:27;;;12895:61;;;;;;;;;;;;;;;;;;;;;;;;9563:3400;;;;;;:::o;928:28::-;;;;;;;;;;;;;:::o;7327:189:2:-;7415:20;7466:19;:17;:19::i;:::-;:31;;;7498:10;7466:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7466:43:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7466:43:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7466:43:2;;;;;;;;;;;;;;;;7451:58;;7327:189;;;:::o;674:23:16:-;;;;;;;;;;;;;:::o;834:173:2:-;907:19;960;:17;:19::i;:::-;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;960:40:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;960:40:2;;;;;;;;;;;;;;;;959:41;942:58;;834:173;:::o;344:31:67:-;;;;;;;;;;;;;:::o;3353:1428:16:-;4484:29;;:::i;:::-;3458:17;:15;:17::i;:::-;:31;;;3490:10;3458:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3458:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3458:43:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3458:43:16;;;;;;;;;;;;;;;;3457:44;3449:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4221:1;4196:22;:20;:22::i;:::-;:26;4124:19;:17;:19::i;:::-;:55;;;4180:10;4124:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4124:67:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4124:67:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4124:67:16;;;;;;;;;;;;;;;;:99;4103:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4282:17;:15;:17::i;:::-;:29;;;4312:10;4282:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4282:41:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4282:41:16;;;;4333:18;:16;:18::i;:::-;:37;;;4371:10;4383:54;4397:39;;4383:13;:54::i;:::-;4333:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4333:105:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4333:105:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4333:105:16;;;;;;;;;;;;;;;;;;;;;;;;;;;4516:31;4536:10;4516:19;:31::i;:::-;4484:63;;4557:48;4580:10;4592:5;4599;4557:22;:48::i;:::-;4677:13;;;;;;;;;;;4671:33;;;4705:10;4725:4;4732:1;4671:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4671:63:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4671:63:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4671:63:16;;;;;;;;;;;;;;;;4663:72;;;;;;;;4763:10;4751:23;;;;;;;;;;;;3353:1428;:::o;605:208:1:-;697:23;768:12;:10;:12::i;:::-;:25;;;794:11;768:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;768:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;768:38:1;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;768:38:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;736:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;605:208;;;:::o;7126:431::-;7207:8;7304:22;:20;:22::i;:::-;7250:19;:17;:19::i;:::-;:43;;;7294:5;7250:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7250:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7250:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7250:50:1;;;;;;;;;;;;;;;;:76;7249:186;;;;;7387:47;7401:32;;7387:13;:47::i;:::-;7344:17;:15;:17::i;:::-;:32;;;7377:5;7344:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7344:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7344:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7344:39:1;;;;;;;;;;;;;;;;:90;;7249:186;:301;;;;;7495:54;7509:39;;7495:13;:54::i;:::-;7452:18;:16;:18::i;:::-;:32;;;7485:5;7452:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7452:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7452:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7452:39:1;;;;;;;;;;;;;;;;:97;;7249:301;7231:319;;7126:431;;;:::o;1153:28:16:-;;;;;;;;;;;;;:::o;5192:4073::-;5451:29;;:::i;:::-;5524:32;;:::i;:::-;5604:24;6446:32;6546:23;5278:22;:20;:22::i;:::-;2314:1:2;2297:14;:18;2293:120;;;2400:1;2339:19;:17;:19::i;:::-;:42;;;2382:14;2339:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2339:58:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2339:58:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2339:58:2;;;;;;;;;;;;;;;;:62;2331:71;;;;;;;;2293:120;5430:9:16;5416:23;;:10;:23;;;5408:32;;;;;;;;5483:31;5503:10;5483:19;:31::i;:::-;5451:63;;5559:34;5575:10;5587:5;5559:15;:34::i;:::-;5524:69;;5631:1;5604:28;;5656:1;5646:7;:11;5642:101;;;5678:22;:20;:22::i;:::-;:56;;;5735:7;5678:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5678:65:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5678:65:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5678:65:16;;;;;;;;;;;;;;;;5659:84;;5642:101;5785:41;5818:7;5785:8;:28;;;:32;;:41;;;;:::i;:::-;5754:8;:28;;:72;;;;;5866:49;5898:16;5866:8;:27;;;:31;;:49;;;;:::i;:::-;5836:8;:27;;:79;;;;;5956:50;5989:16;5956:8;:28;;;:32;;:50;;;;:::i;:::-;5925:8;:28;;:81;;;;;6105:19;:17;:19::i;:::-;:62;;;6168:10;6105:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6105:74:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6105:74:16;;;;6190:17;:15;:17::i;:::-;:36;;;6227:10;6239:8;:28;;;6269:8;:27;;;6190:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6190:107:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6190:107:16;;;;6384:51;6407:10;6419:5;6426:8;6384:22;:51::i;:::-;6481:19;:17;:19::i;:::-;:43;;;6525:10;6481:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6481:55:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6481:55:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6481:55:16;;;;;;;;;;;;;;;;6446:90;;6572:22;:20;:22::i;:::-;6546:48;;6967:40;6981:25;;6967:13;:40::i;:::-;6936:8;:27;;;:71;;6932:2051;;;7023:17;:15;:17::i;:::-;:38;;;7062:10;7023:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7023:50:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7023:50:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7023:50:16;;;;;;;;;;;;;;;;;7745:15;7718:24;:42;7714:272;;;7780:19;:17;:19::i;:::-;:57;;;7838:10;7850:24;7780:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7780:95:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7780:95:16;;;;7893:19;:17;:19::i;:::-;:49;;;7943:10;7955:15;7893:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7893:78:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7893:78:16;;;;7714:272;8168:1;8140:24;:29;8136:103;;;8189:35;8213:10;8189:23;:35::i;:::-;8136:103;6932:2051;;;8842:61;8875:8;:27;;;8842:8;:28;;;:32;;:61;;;;:::i;:::-;8811:8;:28;;:92;;;;;8917:17;:15;:17::i;:::-;:43;;;8961:10;8917:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8917:55:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8917:55:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8917:55:16;;;;;;;;;;;;;;;;;6932:2051;8993:17;:15;:17::i;:::-;:43;;;9037:8;:28;;;8993:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8993:73:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8993:73:16;;;;9127:8;;;;;;;;;;;9121:28;;;9150:10;9170:4;9177:7;9121:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9121:64:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9121:64:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9121:64:16;;;;;;;;;;;;;;;;9113:73;;;;;;;;9209:10;9201:57;;;9221:7;9230:8;:27;;;9201:57;;;;;;;;;;;;;;;;;;;;;;;;5192:4073;;;;;;;:::o;5464:198:2:-;5540:27;5613:41;5626:27;;5613:12;:41::i;:::-;5583:72;;5464:198;:::o;3928:332::-;4013:22;4059:26;:24;:26::i;:::-;4051:35;;;;;;;;4215:38;4229:23;;4215:13;:38::i;:::-;4148:52;4158:19;:17;:19::i;:::-;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4158:41:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4158:41:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4158:41:2;;;;;;;;;;;;;;;;4148:5;:9;;:52;;;;:::i;:::-;:105;;;;;;;;4119:134;;3928:332;;;:::o;3435:320::-;3523:14;3561:26;:24;:26::i;:::-;3553:35;;;;;;;;3619:129;3746:1;3619:109;3689:38;3703:23;;3689:13;:38::i;:::-;3619:52;3629:19;:17;:19::i;:::-;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3629:41:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3629:41:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3629:41:2;;;;;;;;;;;;;;;;3619:5;:9;;:52;;;;:::i;:::-;:69;;:109;;;;:::i;:::-;:126;;:129;;;;:::i;:::-;3598:150;;3435:320;;;:::o;6881:199::-;6957:27;7030:42;7043:28;;7030:12;:42::i;:::-;7000:73;;6881:199;:::o;5668:191::-;5742:25;5811:40;5824:26;;5811:12;:40::i;:::-;5783:69;;5668:191;:::o;6270:199::-;6346:27;6419:42;6432:28;;6419:12;:42::i;:::-;6389:73;;6270:199;:::o;18940:310:16:-;19031:22;;:::i;:::-;19125:17;:15;:17::i;:::-;:34;;;19160:5;19125:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19125:41:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19125:41:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19125:41:16;;;;;;;;;;;;;;;;;;;;;;;;;19070:5;:25;;19097:5;:24;;19069:97;;;;;;;;;;19204:17;:15;:17::i;:::-;:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19204:39:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19204:39:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19204:39:16;;;;;;;;;;;;;;;;19176:5;:25;;:67;;;;;18940:310;;;:::o;14379:897::-;14496:34;;:::i;:::-;14849:23;14578:11;:30;;;14546:10;:29;;:62;;;;;14651:11;:31;;;14618:10;:30;;:64;;;;;14725:11;:31;;;14692:10;:30;;:64;;;;;14875:22;:20;:22::i;:::-;14849:48;;14964:15;14911:19;:17;:19::i;:::-;:43;;;14955:5;14911:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14911:50:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14911:50:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14911:50:16;;;;;;;;;;;;;;;;:68;14907:363;;;15027:22;:20;:22::i;:::-;:56;;;15084:11;:31;;;15027:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15027:89:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15027:89:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15027:89:16;;;;;;;;;;;;;;;;14995:10;:29;;:121;;;;;15164:95;15216:10;:29;;;15164:10;:30;;;:34;;:95;;;;:::i;:::-;15131:10;:30;;:128;;;;;14907:363;14379:897;;;;;:::o;1060:116:84:-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;2683:199:16:-;2759:27;2832:42;2845:28;;2832:12;:42::i;:::-;2802:73;;2683:199;:::o;15767:3037::-;15904:38;16031:40;15999:22;:20;:22::i;:::-;15945:19;:17;:19::i;:::-;:43;;;15989:5;15945:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15945:50:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15945:50:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15945:50:16;;;;;;;;;;;;;;;;:76;15904:117;;16074:17;:15;:17::i;:::-;:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16074:48:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16074:48:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16074:48:16;;;;;;;;;;;;;;;;16031:91;;16184:4;16137:51;;:17;:15;:17::i;:::-;:36;;;16174:5;16137:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16137:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16137:43:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16137:43:16;;;;;;;;;;;;;;;;:51;;;16133:2665;;;16307:47;16321:32;;16307:13;:47::i;:::-;16275:10;:29;;;:79;:195;;;;16416:54;16430:39;;16416:13;:54::i;:::-;16374:18;:16;:18::i;:::-;:32;;;16407:5;16374:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16374:39:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16374:39:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16374:39:16;;;;;;;;;;;;;;;;:96;16275:195;16271:2005;;;16942:1;16900:17;:15;:17::i;:::-;:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16900:39:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16900:39:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16900:39:16;;;;;;;;;;;;;;;;:43;16899:90;;;;16970:18;:16;:18::i;:::-;16969:19;16899:90;16870:137;;;;;;;;17026:17;:15;:17::i;:::-;:41;;;17068:5;17026:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17026:48:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17026:48:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17026:48:16;;;;;;;;;;;;;;;;;17264:33;17260:244;;;17321:17;:15;:17::i;:::-;:48;;;17395:68;17432:11;:30;;;17395:32;:36;;:68;;;;:::i;:::-;17321:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17321:164:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17321:164:16;;;;17260:244;16271:2005;;;17625:33;17621:641;;;17770:17;:15;:17::i;:::-;:48;;;17844:103;17917:10;:29;;;17844:68;17881:11;:30;;;17844:32;:36;;:68;;;;:::i;:::-;:72;;:103;;;;:::i;:::-;17770:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17770:199:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17770:199:16;;;;17621:641;;;18080:17;:15;:17::i;:::-;:48;;;18154:67;18191:10;:29;;;18154:32;:36;;:67;;;;:::i;:::-;18080:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18080:163:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18080:163:16;;;;17621:641;16271:2005;16133:2665;;;18372:47;18386:32;;18372:13;:47::i;:::-;18339:10;:29;;;:80;;:197;;;;;18482:54;18496:39;;18482:13;:54::i;:::-;18439:18;:16;:18::i;:::-;:32;;;18472:5;18439:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18439:39:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18439:39:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18439:39:16;;;;;;;;;;;;;;;;:97;;18339:197;18335:453;;;18557:17;:15;:17::i;:::-;:36;;;18594:5;18557:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18557:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18557:43:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18557:43:16;;;;;;;;;;;;;;;;;18618:17;:15;:17::i;:::-;:48;;;18688:67;18725:10;:29;;;18688:32;:36;;:67;;;;:::i;:::-;18618:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18618:155:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18618:155:16;;;;18335:453;16133:2665;15767:3037;;;;;:::o;6680:195:2:-;6755:26;6826:41;6839:27;;6826:12;:41::i;:::-;6797:71;;6680:195;:::o;5865:170::-;5934:20;5993:34;6006:20;;5993:12;:34::i;:::-;5970:58;;5865:170;:::o;2466:211:16:-;2545:30;2624:45;2637:31;;2624:12;:45::i;:::-;2591:79;;2466:211;:::o;1238:128:84:-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;19467:1473:16:-;19627:17;:15;:17::i;:::-;:40;;;19668:5;19627:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19627:47:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19627:47:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19627:47:16;;;;;;;;;;;;;;;;19623:60;;;19676:7;;19623:60;19775:13;;;;;;;;;;;19756:39;;;19796:5;19756:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19756:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19756:46:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19756:46:16;;;;;;;;;;;;;;;;19752:173;;;19818:18;:16;:18::i;:::-;:37;;;19856:5;19863:50;19877:35;;19863:13;:50::i;:::-;19818:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19818:96:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19818:96:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19818:96:16;;;;;;;;;;;;;;;;;;;;;;;;;;;19752:173;20016:13;;;;;;;;;;;19997:39;;;20037:5;19997:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19997:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19997:46:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19997:46:16;;;;;;;;;;;;;;;;19993:173;;;20059:18;:16;:18::i;:::-;:37;;;20097:5;20104:50;20118:35;;20104:13;:50::i;:::-;20059:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20059:96:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20059:96:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20059:96:16;;;;;;;;;;;;;;;;;;;;;;;;;;;19993:173;20697:19;:17;:19::i;:::-;:61;;;20759:10;20771:29;20798:1;20771:22;:20;:22::i;:::-;:26;;:29;;;;:::i;:::-;20697:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20697:104:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20697:104:16;;;;20883:17;:15;:17::i;:::-;:43;;;20927:5;20883:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20883:50:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20883:50:16;;;;19467:1473;;:::o;4409:172:2:-;4492:11;4573:1;4528:19;:17;:19::i;:::-;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4528:41:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4528:41:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4528:41:2;;;;;;;;;;;;;;;;:46;;4519:55;;4409:172;:::o;665:283:84:-;725:7;941:2;936;:7;;;;;;;;929:14;;665:283;;;;:::o;396:20546:16:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.25;\n\nimport \"@digix/cacp-contracts-dao/contracts/ResolverClient.sol\";\nimport \"../lib/MathHelper.sol\";\nimport \"../common/DaoCommon.sol\";\nimport \"../service/DaoCalculatorService.sol\";\nimport \"./DaoRewardsManager.sol\";\nimport \"./../interface/NumberCarbonVoting.sol\";\n\n\n/**\n@title Contract to handle staking/withdrawing of DGDs for participation in DAO\n@author Digix Holdings\n*/\ncontract DaoStakeLocking is DaoCommon {\n\n    event RedeemBadge(address indexed _user);\n    event LockDGD(address indexed _user, uint256 _amount, uint256 _currentLockedDGDStake);\n    event WithdrawDGD(address indexed _user, uint256 _amount, uint256 _currentLockedDGDStake);\n\n    address public dgdToken;\n    address public dgdBadgeToken;\n\n    // carbonVoting1 refers to this carbon vote: https://digix.global/carbonvote/1/#/\n    // the contract is at: https://etherscan.io/address/0x9f56f330bceb9d4e756be94581298673e94ed592#code\n    address public carbonVoting1;\n\n    // carbonVoting2 refers to this carbon vote: https://digix.global/carbonvote/2/#/\n    // the contract is at: https://etherscan.io/address/0xdec6c0dc7004ba23940c9ee7cb4a0528ec4c0580#code\n    address public carbonVoting2;\n\n    // The two carbon votes implement the NumberCarbonVoting interface, which has a voted(address) function to find out\n    // whether an address has voted in the carbon vote.\n    // Addresses will be awarded a fixed amount of Reputation Point (CONFIG_CARBON_VOTE_REPUTATION_BONUS) for every carbon votes that they participated in\n\n    struct StakeInformation {\n        // this is the amount of DGDs that a user has actualy locked up\n        uint256 userActualLockedDGD;\n\n        // this is the DGDStake that the user get from locking up their DGDs.\n        // this amount might be smaller than the userActualLockedDGD, because the user has locked some DGDs in the middle of the quarter\n        // and those DGDs will not fetch as much DGDStake\n        uint256 userLockedDGDStake;\n\n        // this is the sum of everyone's DGD Stake\n        uint256 totalLockedDGDStake;\n    }\n\n\n    constructor(\n        address _resolver,\n        address _dgdToken,\n        address _dgdBadgeToken,\n        address _carbonVoting1,\n        address _carbonVoting2\n    ) public {\n        require(init(CONTRACT_DAO_STAKE_LOCKING, _resolver));\n        dgdToken = _dgdToken;\n        dgdBadgeToken = _dgdBadgeToken;\n        carbonVoting1 = _carbonVoting1;\n        carbonVoting2 = _carbonVoting2;\n    }\n\n    function daoCalculatorService()\n        internal\n        view\n        returns (DaoCalculatorService _contract)\n    {\n        _contract = DaoCalculatorService(get_contract(CONTRACT_SERVICE_DAO_CALCULATOR));\n    }\n\n    function daoRewardsManager()\n        internal\n        view\n        returns (DaoRewardsManager _contract)\n    {\n        _contract = DaoRewardsManager(get_contract(CONTRACT_DAO_REWARDS_MANAGER));\n    }\n\n\n    /**\n    @notice Function to convert a DGD Badge to Reputation Points\n    @dev The Badge holder can redeem the Badge anytime in the first quarter, or\n         Otherwise, the participant must either lock/withdraw/continue in the current quarter first, before he can redeem a badge\n         Only 1 DGD Badge is accepted from an address, so holders with multiple badges\n         should either sell their other badges or redeem reputation to another address\n    */\n    function redeemBadge()\n        public\n    {\n        // should not have redeemed a badge\n        require(!daoStakeStorage().redeemedBadge(msg.sender), \"already redeemed\");\n\n        // Can only redeem a badge if the reputation has been updated to the previous quarter.\n        // In other words, this holder must have called either lockDGD/withdrawDGD/confirmContinuedParticipation in this quarter (hence, rewards for last quarter was already calculated)\n        // This is to prevent users from changing the Reputation point that would be used to calculate their rewards for the previous quarter.\n\n        // Note that after lockDGD/withdrawDGD/confirmContinuedParticipation is called, the reputation is always updated to the previous quarter\n        require(\n            daoRewardsStorage().lastQuarterThatReputationWasUpdated(msg.sender) == (currentQuarterNumber() - 1),\n            \"reputation not updated\"\n        );\n\n        daoStakeStorage().redeemBadge(msg.sender);\n        daoPointsStorage().increaseReputation(msg.sender, getUintConfig(CONFIG_REPUTATION_POINT_BOOST_FOR_BADGE));\n\n        // update moderator status\n        StakeInformation memory _info = getStakeInformation(msg.sender);\n        refreshModeratorStatus(msg.sender, _info, _info);\n\n        // transfer the badge to this contract\n        require(ERC20(dgdBadgeToken).transferFrom(msg.sender, address(this), 1));\n\n        emit RedeemBadge(msg.sender);\n    }\n\n    function lockDGD(uint256 _amount) public {\n        require(_amount > 0, \"zero amount\");\n        lockDGDInternal(_amount);\n    }\n\n\n    /**\n    @notice Function to lock DGD tokens to participate in the DAO\n    @dev Users must `approve` the DaoStakeLocking contract to transfer DGDs from them\n         Contracts are not allowed to participate in DigixDAO\n    @param _amount Amount of DGDs to lock\n    */\n    function lockDGDInternal(uint256 _amount)\n        internal\n        ifGlobalRewardsSet(currentQuarterNumber())\n    {\n        // msg.sender must be an EOA. Disallows any contract from participating in the DAO.\n        require(msg.sender == tx.origin);\n\n        StakeInformation memory _info = getStakeInformation(msg.sender);\n        StakeInformation memory _newInfo = refreshDGDStake(msg.sender, _info);\n\n        uint256 _additionalStake = 0;\n        if (_amount > 0) _additionalStake = daoCalculatorService().calculateAdditionalLockedDGDStake(_amount);\n\n        _newInfo.userActualLockedDGD = _newInfo.userActualLockedDGD.add(_amount);\n        _newInfo.userLockedDGDStake = _newInfo.userLockedDGDStake.add(_additionalStake);\n        _newInfo.totalLockedDGDStake = _newInfo.totalLockedDGDStake.add(_additionalStake);\n\n        // This has to happen at least once before user can participate in next quarter\n        daoRewardsManager().updateRewardsAndReputationBeforeNewQuarter(msg.sender);\n\n        daoStakeStorage().updateUserDGDStake(msg.sender, _newInfo.userActualLockedDGD, _newInfo.userLockedDGDStake);\n\n\n        //since Reputation is updated, we need to refresh moderator status\n        refreshModeratorStatus(msg.sender, _info, _newInfo);\n\n        uint256 _lastParticipatedQuarter = daoRewardsStorage().lastParticipatedQuarter(msg.sender);\n        uint256 _currentQuarter = currentQuarterNumber();\n\n        // Note: there might be a case when user locked in very small amount A that is less than Minimum locked DGD\n        // then, lock again in the middle of the quarter. This will not take into account that A was staked in earlier. Its as if A is only staked in now.\n        // Its not ideal, but we will keep it this way.\n        if (_newInfo.userLockedDGDStake >= getUintConfig(CONFIG_MINIMUM_LOCKED_DGD)) {\n            daoStakeStorage().addToParticipantList(msg.sender); // this will not add a second duplicate of the address if its already there\n\n            // if this is the first time we lock/unlock/continue in this quarter, save the previous lastParticipatedQuarter\n            // the purpose of the previousLastParticipatedQuarter is so that, if this participant withdraw all his DGD after locking in,\n            // we will revert his lastParticipatedQuarter to the previousLastParticipatedQuarter, so as to not screw up any calculation\n            // that uses the lastParticipatedQuarter (for example, for calculating the Reputation penalty for not participating in a number of quarters)\n            if (_lastParticipatedQuarter < _currentQuarter) {\n                daoRewardsStorage().updatePreviousLastParticipatedQuarter(msg.sender, _lastParticipatedQuarter);\n                daoRewardsStorage().updateLastParticipatedQuarter(msg.sender, _currentQuarter);\n            }\n\n            // if this is the first time they're locking tokens, ever,\n            // reward them with bonus for carbon voting activity\n            if (_lastParticipatedQuarter == 0) {\n                rewardCarbonVotingBonus(msg.sender);\n            }\n        } else { // this participant doesnt have enough DGD to be a participant\n            // Absolute: The lastParticipatedQuarter of this participant WILL NEVER be the current quarter\n            // Otherwise, his lockedDGDStake must be above the CONFIG_MINIMUM_LOCKED_DGDd\n\n            // Hence, the refreshDGDStake() function must have added _newInfo.userLockedDGDStake to _newInfo.totalLockedDGDStake\n\n            // Since this participant is not counted as a participant, we need to deduct _newInfo.userLockedDGDStake from _newInfo.totalLockedDGDStake\n            _newInfo.totalLockedDGDStake = _newInfo.totalLockedDGDStake.sub(_newInfo.userLockedDGDStake);\n            daoStakeStorage().removeFromParticipantList(msg.sender);\n        }\n\n        daoStakeStorage().updateTotalLockedDGDStake(_newInfo.totalLockedDGDStake);\n\n        // interaction happens last\n        require(ERC20(dgdToken).transferFrom(msg.sender, address(this), _amount));\n        emit LockDGD(msg.sender, _amount, _newInfo.userLockedDGDStake);\n    }\n\n\n    /**\n    @notice Function to withdraw DGD tokens from this contract (can only be withdrawn in the locking phase of quarter)\n    @param _amount Number of DGD tokens to withdraw\n    @return {\n      \"_success\": \"Boolean, true if the withdrawal was successful, revert otherwise\"\n    }\n    */\n    function withdrawDGD(uint256 _amount)\n        public\n        ifGlobalRewardsSet(currentQuarterNumber())\n    {\n        require(isLockingPhase() || daoUpgradeStorage().isReplacedByNewDao()); // If the DAO is already replaced, everyone is free to withdraw their DGDs anytime\n        StakeInformation memory _info = getStakeInformation(msg.sender);\n        StakeInformation memory _newInfo = refreshDGDStake(msg.sender, _info);\n\n        // This address must have at least some DGDs locked in, to withdraw\n        // Otherwise, its meaningless anw\n        // This also makes sure that the first participation ever must be a lockDGD() call, to avoid unnecessary complications\n        require(_info.userActualLockedDGD > 0);\n\n        require(_info.userActualLockedDGD >= _amount);\n        _newInfo.userActualLockedDGD = _newInfo.userActualLockedDGD.sub(_amount);\n        _newInfo.userLockedDGDStake = _newInfo.userLockedDGDStake.sub(_amount);\n        _newInfo.totalLockedDGDStake = _newInfo.totalLockedDGDStake.sub(_amount);\n\n        //_newInfo.totalLockedDGDStake = _newInfo.totalLockedDGDStake.sub(_amount);\n\n        // This has to happen at least once before user can participate in next quarter\n        daoRewardsManager().updateRewardsAndReputationBeforeNewQuarter(msg.sender);\n\n        //since Reputation is updated, we need to refresh moderator status\n        refreshModeratorStatus(msg.sender, _info, _newInfo);\n\n        uint256 _lastParticipatedQuarter = daoRewardsStorage().lastParticipatedQuarter(msg.sender);\n        uint256 _currentQuarter = currentQuarterNumber();\n\n        if (_newInfo.userLockedDGDStake < getUintConfig(CONFIG_MINIMUM_LOCKED_DGD)) { // this participant doesnt have enough DGD to be a participant\n            // if this participant has lock/unlock/continue in this quarter before, we need to revert the lastParticipatedQuarter to the previousLastParticipatedQuarter\n            if (_lastParticipatedQuarter == _currentQuarter) {\n                daoRewardsStorage().updateLastParticipatedQuarter(msg.sender, daoRewardsStorage().previousLastParticipatedQuarter(msg.sender));\n            }\n\n            // if this participant is not counted as a participant, the totalLockedDGDStake should not take into account the userLockedDGDStake at all\n            _newInfo.totalLockedDGDStake = _newInfo.totalLockedDGDStake.sub(_newInfo.userLockedDGDStake);\n\n            daoStakeStorage().removeFromParticipantList(msg.sender);\n        } else { // This participant still remains as a participant\n            // if this is the first time we lock/unlock/continue in this quarter, save the previous lastParticipatedQuarter\n            if (_lastParticipatedQuarter < _currentQuarter) {\n                daoRewardsStorage().updatePreviousLastParticipatedQuarter(msg.sender, _lastParticipatedQuarter);\n                daoRewardsStorage().updateLastParticipatedQuarter(msg.sender, _currentQuarter);\n\n            }\n            // the totalLockedDGDStake after refreshDGDStake() should decrease by _amount, since this guy withdraws _amount\n        }\n\n        daoStakeStorage().updateUserDGDStake(msg.sender, _newInfo.userActualLockedDGD, _newInfo.userLockedDGDStake);\n        daoStakeStorage().updateTotalLockedDGDStake(_newInfo.totalLockedDGDStake);\n\n        require(ERC20(dgdToken).transfer(msg.sender, _amount));\n\n        emit WithdrawDGD(msg.sender, _amount, _newInfo.userLockedDGDStake);\n    }\n\n\n    /**\n    @notice Function to be called by someone who doesnt change their DGDStake for the next quarter to confirm that they're participating\n    @dev This can be done in the middle of the quarter as well.\n         If someone just lets their DGDs sit in the DAO, and don't call this function, they are not counted as a participant in the quarter.\n    */\n    function confirmContinuedParticipation()\n        public\n    {\n        lockDGDInternal(0);\n    }\n\n\n    /**\n    @notice This function refreshes the DGD stake of a user before doing any staking action(locking/withdrawing/continuing) in a new quarter\n    @dev We need to do this because sometimes, the user locked DGDs in the middle of the previous quarter. Hence, his DGDStake in the record now\n         is not correct. Note that this function might be called in the middle of the current quarter as well.\n\n        This has no effect if the user has already done some staking action in the current quarter\n         _infoBefore has the user's current stake information\n         _infoAfter will be the user's stake information after refreshing\n\n         This function updates the totalLockedDGDStake as if, the _user is participating in this quarter\n         Therefore, if the _user actually will not qualify as a participant, the caller of this function needs to deduct\n         _infoAfter.userLockedDGDStake from _infoAfter.totalLockedDGDStake\n    */\n    function refreshDGDStake(address _user, StakeInformation _infoBefore)\n        internal\n        view\n        returns (StakeInformation memory _infoAfter)\n    {\n        _infoAfter.userLockedDGDStake = _infoBefore.userLockedDGDStake;\n        _infoAfter.userActualLockedDGD = _infoBefore.userActualLockedDGD;\n        _infoAfter.totalLockedDGDStake = _infoBefore.totalLockedDGDStake;\n\n        // only need to refresh if this is the first refresh in this new quarter;\n        uint256 _currentQuarter = currentQuarterNumber();\n        if (daoRewardsStorage().lastParticipatedQuarter(_user) < _currentQuarter) {\n            _infoAfter.userLockedDGDStake = daoCalculatorService().calculateAdditionalLockedDGDStake(_infoBefore.userActualLockedDGD);\n\n            _infoAfter.totalLockedDGDStake = _infoAfter.totalLockedDGDStake.add(\n                _infoAfter.userLockedDGDStake\n            );\n        }\n    }\n\n\n    /**\n    @notice This function refreshes the Moderator status of a user, to be done right after ANY STEP where a user's reputation or DGDStake is changed\n    @dev _infoBefore is the stake information of the user before this transaction, _infoAfter is the stake information after this transaction\n         This function needs to:\n            - add/remove addresses from the moderator list accordingly\n            - adjust the totalModeratorLockedDGDStake accordingly as well\n    */\n    function refreshModeratorStatus(address _user, StakeInformation _infoBefore, StakeInformation _infoAfter)\n        internal\n    {\n        bool _alreadyParticipatedInThisQuarter = daoRewardsStorage().lastParticipatedQuarter(_user) == currentQuarterNumber();\n        uint256 _currentTotalModeratorLockedDGDs = daoStakeStorage().totalModeratorLockedDGDStake();\n\n        if (daoStakeStorage().isInModeratorsList(_user) == true) {\n            // this participant was already in the moderator list\n\n            if (_infoAfter.userLockedDGDStake < getUintConfig(CONFIG_MINIMUM_DGD_FOR_MODERATOR) ||\n                daoPointsStorage().getReputation(_user) < getUintConfig(CONFIG_MINIMUM_REPUTATION_FOR_MODERATOR)) {\n                // this participant is no longer a moderator this quarter, should be removed\n\n                // Throw if this is the last moderator. There must be at least one moderator in the moderator list. Otherwise calculateGlobalRewardsBeforeNewQuarter() will fail.\n                // after replacing DAO, we will want all moderators to withdraw their DGDs, hence the check\n                require(\n                    (daoStakeStorage().readTotalModerators() > 1) ||\n                    (!isDaoNotReplaced())\n                );\n\n                daoStakeStorage().removeFromModeratorList(_user);\n\n                // only need to deduct the dgdStake from the totalModeratorLockedDGDStake if this participant has participated in this quarter before this transaction\n                if (_alreadyParticipatedInThisQuarter) {\n                    daoStakeStorage().updateTotalModeratorLockedDGDs(\n                        _currentTotalModeratorLockedDGDs.sub(_infoBefore.userLockedDGDStake)\n                    );\n                }\n\n            } else { // this moderator was in the moderator list and still remains a moderator now\n                if (_alreadyParticipatedInThisQuarter) { // if already participated in this quarter, just account for the difference in dgdStake\n                    daoStakeStorage().updateTotalModeratorLockedDGDs(\n                        _currentTotalModeratorLockedDGDs.sub(_infoBefore.userLockedDGDStake).add(_infoAfter.userLockedDGDStake)\n                    );\n                } else { // has not participated in this quarter before this transaction\n                    daoStakeStorage().updateTotalModeratorLockedDGDs(\n                        _currentTotalModeratorLockedDGDs.add(_infoAfter.userLockedDGDStake)\n                    );\n                }\n            }\n        } else { // was not in moderator list\n            if (_infoAfter.userLockedDGDStake >= getUintConfig(CONFIG_MINIMUM_DGD_FOR_MODERATOR) &&\n                daoPointsStorage().getReputation(_user) >= getUintConfig(CONFIG_MINIMUM_REPUTATION_FOR_MODERATOR)) {\n\n                daoStakeStorage().addToModeratorList(_user);\n                daoStakeStorage().updateTotalModeratorLockedDGDs(\n                    _currentTotalModeratorLockedDGDs.add(_infoAfter.userLockedDGDStake)\n                );\n            }\n        }\n    }\n\n\n    /**\n    @notice Get the actualLockedDGD and lockedDGDStake of a user, as well as the totalLockedDGDStake of all users\n    */\n    function getStakeInformation(address _user)\n        internal\n        view\n        returns (StakeInformation _info)\n    {\n        (_info.userActualLockedDGD, _info.userLockedDGDStake) = daoStakeStorage().readUserDGDStake(_user);\n        _info.totalLockedDGDStake = daoStakeStorage().totalLockedDGDStake();\n    }\n\n\n    /**\n    @notice Reward the voters of carbon voting rounds with initial bonus reputation\n    @dev This is only called when they're locking tokens for the first time, enough tokens to be a participant\n    */\n    function rewardCarbonVotingBonus(address _user)\n        internal\n    {\n        // if the bonus has already been given out once to this user, return\n        if (daoStakeStorage().carbonVoteBonusClaimed(_user)) return;\n\n        // for carbon voting 1, if voted, give out a bonus\n        if (NumberCarbonVoting(carbonVoting1).voted(_user)) {\n            daoPointsStorage().increaseReputation(_user, getUintConfig(CONFIG_CARBON_VOTE_REPUTATION_BONUS));\n        }\n        // for carbon voting 2, if voted, give out a bonus\n        if (NumberCarbonVoting(carbonVoting2).voted(_user)) {\n            daoPointsStorage().increaseReputation(_user, getUintConfig(CONFIG_CARBON_VOTE_REPUTATION_BONUS));\n        }\n\n        // we changed reputation, so we need to update the last quarter that reputation was updated\n        // This is to take care of this situation:\n        // Holder A locks DGD for the first time in quarter 5, gets some bonus RP for the carbon votes\n        // Then, A withdraw all his DGDs right away. Essentially, he's not participating in quarter 5 anymore\n        // Now, when he comes back at quarter 10, he should be deducted reputation for 5 quarters that he didnt participated in: from quarter 5 to quarter 9\n        daoRewardsStorage().updateLastQuarterThatReputationWasUpdated(msg.sender, currentQuarterNumber().sub(1));\n\n        // set that this user's carbon voting bonus has been given out\n        daoStakeStorage().setCarbonVoteBonusClaimed(_user);\n    }\n}\n",
  "sourcePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoStakeLocking.sol",
  "ast": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoStakeLocking.sol",
    "exportedSymbols": {
      "DaoStakeLocking": [
        6321
      ]
    },
    "id": 6322,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5369,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:16"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 5370,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 18629,
        "src": "26:64:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/lib/MathHelper.sol",
        "file": "../lib/MathHelper.sol",
        "id": 5371,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 8536,
        "src": "91:31:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoCommon.sol",
        "file": "../common/DaoCommon.sol",
        "id": 5372,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 885,
        "src": "123:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/service/DaoCalculatorService.sol",
        "file": "../service/DaoCalculatorService.sol",
        "id": 5373,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 12094,
        "src": "157:45:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoRewardsManager.sol",
        "file": "./DaoRewardsManager.sol",
        "id": 5374,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 4667,
        "src": "203:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interface/NumberCarbonVoting.sol",
        "file": "./../interface/NumberCarbonVoting.sol",
        "id": 5375,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 7870,
        "src": "237:47:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5376,
              "name": "DaoCommon",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 884,
              "src": "424:9:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoCommon_$884",
                "typeString": "contract DaoCommon"
              }
            },
            "id": 5377,
            "nodeType": "InheritanceSpecifier",
            "src": "424:9:16"
          }
        ],
        "contractDependencies": [
          884,
          1282,
          1629,
          1868,
          1960,
          18628
        ],
        "contractKind": "contract",
        "documentation": "@title Contract to handle staking/withdrawing of DGDs for participation in DAO\n@author Digix Holdings",
        "fullyImplemented": true,
        "id": 6321,
        "linearizedBaseContracts": [
          6321,
          884,
          1282,
          1960,
          1868,
          1629,
          18628
        ],
        "name": "DaoStakeLocking",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 5381,
            "name": "RedeemBadge",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5380,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5379,
                  "indexed": true,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 5381,
                  "src": "459:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5378,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "459:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "458:23:16"
            },
            "src": "441:41:16"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5389,
            "name": "LockDGD",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5383,
                  "indexed": true,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 5389,
                  "src": "501:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "501:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5385,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5389,
                  "src": "524:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5384,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "524:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5387,
                  "indexed": false,
                  "name": "_currentLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 5389,
                  "src": "541:30:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "541:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "500:72:16"
            },
            "src": "487:86:16"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5397,
            "name": "WithdrawDGD",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5391,
                  "indexed": true,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 5397,
                  "src": "596:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5390,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "596:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5393,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5397,
                  "src": "619:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5392,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "619:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5395,
                  "indexed": false,
                  "name": "_currentLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 5397,
                  "src": "636:30:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5394,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "636:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "595:72:16"
            },
            "src": "578:90:16"
          },
          {
            "constant": false,
            "id": 5399,
            "name": "dgdToken",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "674:23:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5398,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "674:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5401,
            "name": "dgdBadgeToken",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "703:28:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5400,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "703:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5403,
            "name": "carbonVoting1",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "928:28:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5402,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "928:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5405,
            "name": "carbonVoting2",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "1153:28:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5404,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1153:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "DaoStakeLocking.StakeInformation",
            "id": 5412,
            "members": [
              {
                "constant": false,
                "id": 5407,
                "name": "userActualLockedDGD",
                "nodeType": "VariableDeclaration",
                "scope": 5412,
                "src": "1626:27:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5406,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1626:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5409,
                "name": "userLockedDGDStake",
                "nodeType": "VariableDeclaration",
                "scope": 5412,
                "src": "1937:26:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5408,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1937:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5411,
                "name": "totalLockedDGDStake",
                "nodeType": "VariableDeclaration",
                "scope": 5412,
                "src": "2025:27:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5410,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2025:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "StakeInformation",
            "nodeType": "StructDefinition",
            "scope": 6321,
            "src": "1520:539:16",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5448,
              "nodeType": "Block",
              "src": "2241:219:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5427,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "2264:26:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5428,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5414,
                            "src": "2292:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5426,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "2259:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 5429,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2259:43:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5425,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2251:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2251:52:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5431,
                  "nodeType": "ExpressionStatement",
                  "src": "2251:52:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5432,
                      "name": "dgdToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5399,
                      "src": "2313:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5433,
                      "name": "_dgdToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5416,
                      "src": "2324:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2313:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5435,
                  "nodeType": "ExpressionStatement",
                  "src": "2313:20:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5436,
                      "name": "dgdBadgeToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5401,
                      "src": "2343:13:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5437,
                      "name": "_dgdBadgeToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5418,
                      "src": "2359:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2343:30:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5439,
                  "nodeType": "ExpressionStatement",
                  "src": "2343:30:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5440,
                      "name": "carbonVoting1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5403,
                      "src": "2383:13:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5441,
                      "name": "_carbonVoting1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5420,
                      "src": "2399:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2383:30:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5443,
                  "nodeType": "ExpressionStatement",
                  "src": "2383:30:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5444,
                      "name": "carbonVoting2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5405,
                      "src": "2423:13:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5445,
                      "name": "_carbonVoting2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5422,
                      "src": "2439:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2423:30:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5447,
                  "nodeType": "ExpressionStatement",
                  "src": "2423:30:16"
                }
              ]
            },
            "documentation": null,
            "id": 5449,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5414,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2087:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2087:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5416,
                  "name": "_dgdToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2114:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2114:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5418,
                  "name": "_dgdBadgeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2141:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5417,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2141:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5420,
                  "name": "_carbonVoting1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2173:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5419,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2173:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5422,
                  "name": "_carbonVoting2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2205:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2205:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2077:156:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2241:0:16"
            },
            "scope": 6321,
            "src": "2066:394:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5462,
              "nodeType": "Block",
              "src": "2581:96:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5454,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5452,
                      "src": "2591:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5457,
                              "name": "CONTRACT_SERVICE_DAO_CALCULATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1394,
                              "src": "2637:31:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5456,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "2624:12:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 5458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2624:45:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5455,
                        "name": "DaoCalculatorService",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12093,
                        "src": "2603:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoCalculatorService_$12093_$",
                          "typeString": "type(contract DaoCalculatorService)"
                        }
                      },
                      "id": 5459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2603:67:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "src": "2591:79:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "id": 5461,
                  "nodeType": "ExpressionStatement",
                  "src": "2591:79:16"
                }
              ]
            },
            "documentation": null,
            "id": 5463,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoCalculatorService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5450,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2495:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5452,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 5463,
                  "src": "2545:30:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                    "typeString": "contract DaoCalculatorService"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5451,
                    "name": "DaoCalculatorService",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12093,
                    "src": "2545:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2544:32:16"
            },
            "scope": 6321,
            "src": "2466:211:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5476,
              "nodeType": "Block",
              "src": "2792:90:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5468,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5466,
                      "src": "2802:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                        "typeString": "contract DaoRewardsManager"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5471,
                              "name": "CONTRACT_DAO_REWARDS_MANAGER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1367,
                              "src": "2845:28:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5470,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "2832:12:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 5472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2832:42:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5469,
                        "name": "DaoRewardsManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4666,
                        "src": "2814:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoRewardsManager_$4666_$",
                          "typeString": "type(contract DaoRewardsManager)"
                        }
                      },
                      "id": 5473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2814:61:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                        "typeString": "contract DaoRewardsManager"
                      }
                    },
                    "src": "2802:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                      "typeString": "contract DaoRewardsManager"
                    }
                  },
                  "id": 5475,
                  "nodeType": "ExpressionStatement",
                  "src": "2802:73:16"
                }
              ]
            },
            "documentation": null,
            "id": 5477,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoRewardsManager",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2709:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5466,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 5477,
                  "src": "2759:27:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                    "typeString": "contract DaoRewardsManager"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5465,
                    "name": "DaoRewardsManager",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4666,
                    "src": "2759:17:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                      "typeString": "contract DaoRewardsManager"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2758:29:16"
            },
            "scope": 6321,
            "src": "2683:199:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5557,
              "nodeType": "Block",
              "src": "3395:1386:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3457:44:16",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5484,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "3490:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3490:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5481,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "3458:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3458:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "redeemedBadge",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15634,
                            "src": "3458:31:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view external returns (bool)"
                            }
                          },
                          "id": 5486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3458:43:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616c72656164792072656465656d6564",
                        "id": 5488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3503:18:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b667c5fb21ab92ff32ace44f3883e5c3da353b2cc9df52e6829a4aa5b91d35be",
                          "typeString": "literal_string \"already redeemed\""
                        },
                        "value": "already redeemed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b667c5fb21ab92ff32ace44f3883e5c3da353b2cc9df52e6829a4aa5b91d35be",
                          "typeString": "literal_string \"already redeemed\""
                        }
                      ],
                      "id": 5480,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26186,
                      "src": "3449:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3449:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5490,
                  "nodeType": "ExpressionStatement",
                  "src": "3449:73:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5495,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "4180:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4180:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5492,
                                "name": "daoRewardsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1251,
                                "src": "4124:17:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                  "typeString": "function () view returns (contract DaoRewardsStorage)"
                                }
                              },
                              "id": 5493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4124:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                "typeString": "contract DaoRewardsStorage"
                              }
                            },
                            "id": 5494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastQuarterThatReputationWasUpdated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14583,
                            "src": "4124:55:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4124:67:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5498,
                                  "name": "currentQuarterNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1021,
                                  "src": "4196:20:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 5499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4196:22:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 5500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4221:1:16",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4196:26:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5502,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4195:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4124:99:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657075746174696f6e206e6f742075706461746564",
                        "id": 5504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4237:24:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f7aad258964a8f464c20c063156e3292ab8436e10c078f858f041c7f47091e2",
                          "typeString": "literal_string \"reputation not updated\""
                        },
                        "value": "reputation not updated"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9f7aad258964a8f464c20c063156e3292ab8436e10c078f858f041c7f47091e2",
                          "typeString": "literal_string \"reputation not updated\""
                        }
                      ],
                      "id": 5491,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26186,
                      "src": "4103:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4103:168:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5506,
                  "nodeType": "ExpressionStatement",
                  "src": "4103:168:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5510,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4312:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4312:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5507,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "4282:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4282:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redeemBadge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15669,
                      "src": "4282:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 5512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4282:41:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5513,
                  "nodeType": "ExpressionStatement",
                  "src": "4282:41:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5517,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4371:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4371:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5520,
                            "name": "CONFIG_REPUTATION_POINT_BOOST_FOR_BADGE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1607,
                            "src": "4397:39:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 5519,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "4383:13:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 5521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4383:54:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5514,
                          "name": "daoPointsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1237,
                          "src": "4333:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                            "typeString": "function () view returns (contract DaoPointsStorage)"
                          }
                        },
                        "id": 5515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4333:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                          "typeString": "contract DaoPointsStorage"
                        }
                      },
                      "id": 5516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "increaseReputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14384,
                      "src": "4333:37:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (address,uint256) external returns (uint256,uint256)"
                      }
                    },
                    "id": 5522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4333:105:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "id": 5523,
                  "nodeType": "ExpressionStatement",
                  "src": "4333:105:16"
                },
                {
                  "assignments": [
                    5525
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5525,
                      "name": "_info",
                      "nodeType": "VariableDeclaration",
                      "scope": 5558,
                      "src": "4484:29:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5524,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "4484:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5530,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5527,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4536:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4536:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5526,
                      "name": "getStakeInformation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6255,
                      "src": "4516:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4516:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4484:63:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5532,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4580:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4580:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5534,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5525,
                        "src": "4592:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5535,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5525,
                        "src": "4599:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5531,
                      "name": "refreshModeratorStatus",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6225,
                      "src": "4557:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$__$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory,struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4557:48:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5537,
                  "nodeType": "ExpressionStatement",
                  "src": "4557:48:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5543,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "4705:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4705:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5546,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26297,
                                "src": "4725:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              ],
                              "id": 5545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4717:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4717:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4732:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5540,
                                "name": "dgdBadgeToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5401,
                                "src": "4677:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5539,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25888,
                              "src": "4671:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 5541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4671:20:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$25888",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 5542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25870,
                          "src": "4671:33:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4671:63:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5538,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "4663:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4663:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5551,
                  "nodeType": "ExpressionStatement",
                  "src": "4663:72:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5553,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4763:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4763:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5552,
                      "name": "RedeemBadge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5381,
                      "src": "4751:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 5555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4751:23:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5556,
                  "nodeType": "EmitStatement",
                  "src": "4746:28:16"
                }
              ]
            },
            "documentation": "@notice Function to convert a DGD Badge to Reputation Points\n@dev The Badge holder can redeem the Badge anytime in the first quarter, or\nOtherwise, the participant must either lock/withdraw/continue in the current quarter first, before he can redeem a badge\nOnly 1 DGD Badge is accepted from an address, so holders with multiple badges\nshould either sell their other badges or redeem reputation to another address",
            "id": 5558,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "redeemBadge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5478,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3373:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3395:0:16"
            },
            "scope": 6321,
            "src": "3353:1428:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5574,
              "nodeType": "Block",
              "src": "4828:86:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5564,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5560,
                          "src": "4846:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4856:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4846:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7a65726f20616d6f756e74",
                        "id": 5567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4859:13:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_213de2103ab57dc723846d919aa5c479660e698c1413b0ae66689049b9877064",
                          "typeString": "literal_string \"zero amount\""
                        },
                        "value": "zero amount"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_213de2103ab57dc723846d919aa5c479660e698c1413b0ae66689049b9877064",
                          "typeString": "literal_string \"zero amount\""
                        }
                      ],
                      "id": 5563,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26186,
                      "src": "4838:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4838:35:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5569,
                  "nodeType": "ExpressionStatement",
                  "src": "4838:35:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5571,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5560,
                        "src": "4899:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5570,
                      "name": "lockDGDInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5787,
                      "src": "4883:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 5572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4883:24:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5573,
                  "nodeType": "ExpressionStatement",
                  "src": "4883:24:16"
                }
              ]
            },
            "documentation": null,
            "id": 5575,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "lockDGD",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5560,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5575,
                  "src": "4804:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4804:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4803:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5562,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4828:0:16"
            },
            "scope": 6321,
            "src": "4787:127:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5786,
              "nodeType": "Block",
              "src": "5306:3959:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 5589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5585,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "5416:3:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5416:10:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5587,
                            "name": "tx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26194,
                            "src": "5430:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_transaction",
                              "typeString": "tx"
                            }
                          },
                          "id": 5588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "origin",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5430:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5416:23:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5584,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "5408:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5408:32:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5591,
                  "nodeType": "ExpressionStatement",
                  "src": "5408:32:16"
                },
                {
                  "assignments": [
                    5593
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5593,
                      "name": "_info",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "5451:29:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5592,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "5451:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5598,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5595,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "5503:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5503:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5594,
                      "name": "getStakeInformation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6255,
                      "src": "5483:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5483:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5451:63:16"
                },
                {
                  "assignments": [
                    5600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5600,
                      "name": "_newInfo",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "5524:32:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5599,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "5524:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5606,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5602,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "5575:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5575:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5604,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5593,
                        "src": "5587:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5601,
                      "name": "refreshDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6072,
                      "src": "5559:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5559:34:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5524:69:16"
                },
                {
                  "assignments": [
                    5608
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5608,
                      "name": "_additionalStake",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "5604:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5607,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5604:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5610,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 5609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5631:1:16",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5604:28:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5611,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5577,
                      "src": "5646:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5612,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5656:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5646:11:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5622,
                  "nodeType": "IfStatement",
                  "src": "5642:101:16",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5614,
                        "name": "_additionalStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5608,
                        "src": "5659:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5618,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5577,
                            "src": "5735:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5615,
                              "name": "daoCalculatorService",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5463,
                              "src": "5678:20:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                "typeString": "function () view returns (contract DaoCalculatorService)"
                              }
                            },
                            "id": 5616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5678:22:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                              "typeString": "contract DaoCalculatorService"
                            }
                          },
                          "id": 5617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "calculateAdditionalLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11712,
                          "src": "5678:56:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view external returns (uint256)"
                          }
                        },
                        "id": 5619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5678:65:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5659:84:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5621,
                    "nodeType": "ExpressionStatement",
                    "src": "5659:84:16"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5623,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "5754:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5625,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "5754:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5629,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5577,
                          "src": "5818:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5626,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "5785:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5627,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "5785:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "5785:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5630,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5785:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5754:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5632,
                  "nodeType": "ExpressionStatement",
                  "src": "5754:72:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5633,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "5836:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5635,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "5836:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5639,
                          "name": "_additionalStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5608,
                          "src": "5898:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5636,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "5866:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5637,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5409,
                          "src": "5866:27:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5638,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "5866:31:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5866:49:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5836:79:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5642,
                  "nodeType": "ExpressionStatement",
                  "src": "5836:79:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5643,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "5925:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5645,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "5925:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5649,
                          "name": "_additionalStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5608,
                          "src": "5989:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5646,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "5956:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5647,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5411,
                          "src": "5956:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "5956:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5956:50:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5925:81:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5652,
                  "nodeType": "ExpressionStatement",
                  "src": "5925:81:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5656,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6168:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6168:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5653,
                          "name": "daoRewardsManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5477,
                          "src": "6105:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsManager_$4666_$",
                            "typeString": "function () view returns (contract DaoRewardsManager)"
                          }
                        },
                        "id": 5654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6105:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                          "typeString": "contract DaoRewardsManager"
                        }
                      },
                      "id": 5655,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateRewardsAndReputationBeforeNewQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3767,
                      "src": "6105:62:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 5658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6105:74:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5659,
                  "nodeType": "ExpressionStatement",
                  "src": "6105:74:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5663,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6227:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6227:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5665,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "6239:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5666,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userActualLockedDGD",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5407,
                        "src": "6239:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5667,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "6269:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5668,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "6269:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5660,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "6190:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6190:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5662,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateUserDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15753,
                      "src": "6190:36:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256) external"
                      }
                    },
                    "id": 5669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6190:107:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5670,
                  "nodeType": "ExpressionStatement",
                  "src": "6190:107:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5672,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6407:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6407:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5674,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5593,
                        "src": "6419:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5675,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "6426:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5671,
                      "name": "refreshModeratorStatus",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6225,
                      "src": "6384:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$__$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory,struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6384:51:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5677,
                  "nodeType": "ExpressionStatement",
                  "src": "6384:51:16"
                },
                {
                  "assignments": [
                    5679
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5679,
                      "name": "_lastParticipatedQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "6446:32:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5678,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6446:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5686,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5683,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6525:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6525:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5680,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "6481:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 5681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6481:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 5682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastParticipatedQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14571,
                      "src": "6481:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 5685,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6481:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6446:90:16"
                },
                {
                  "assignments": [
                    5688
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5688,
                      "name": "_currentQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "6546:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5687,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6546:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5691,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5689,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "6572:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6572:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6546:48:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5692,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "6936:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5693,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "6936:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5695,
                          "name": "CONFIG_MINIMUM_LOCKED_DGD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1454,
                          "src": "6981:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 5694,
                        "name": "getUintConfig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "6967:13:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) view returns (uint256)"
                        }
                      },
                      "id": 5696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6967:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6936:71:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5755,
                    "nodeType": "Block",
                    "src": "8255:728:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5737,
                              "name": "_newInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5600,
                              "src": "8811:8:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 5739,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5411,
                            "src": "8811:28:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5743,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5600,
                                  "src": "8875:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5744,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5409,
                                "src": "8875:27:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5740,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5600,
                                  "src": "8842:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5741,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5411,
                                "src": "8842:28:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25586,
                              "src": "8842:32:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8842:61:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8811:92:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5747,
                        "nodeType": "ExpressionStatement",
                        "src": "8811:92:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5751,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "8961:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8961:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5748,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "8917:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8917:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removeFromParticipantList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15817,
                            "src": "8917:43:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) external returns (bool)"
                            }
                          },
                          "id": 5753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8917:55:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5754,
                        "nodeType": "ExpressionStatement",
                        "src": "8917:55:16"
                      }
                    ]
                  },
                  "id": 5756,
                  "nodeType": "IfStatement",
                  "src": "6932:2051:16",
                  "trueBody": {
                    "id": 5736,
                    "nodeType": "Block",
                    "src": "7009:1240:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5701,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "7062:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7062:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5698,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "7023:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7023:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "addToParticipantList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15796,
                            "src": "7023:38:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) external returns (bool)"
                            }
                          },
                          "id": 5703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7023:50:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5704,
                        "nodeType": "ExpressionStatement",
                        "src": "7023:50:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5705,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5679,
                            "src": "7718:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5706,
                            "name": "_currentQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5688,
                            "src": "7745:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7718:42:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5725,
                        "nodeType": "IfStatement",
                        "src": "7714:272:16",
                        "trueBody": {
                          "id": 5724,
                          "nodeType": "Block",
                          "src": "7762:224:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5711,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "7838:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5712,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7838:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5713,
                                    "name": "_lastParticipatedQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5679,
                                    "src": "7850:24:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5708,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "7780:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7780:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updatePreviousLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14767,
                                  "src": "7780:57:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7780:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5715,
                              "nodeType": "ExpressionStatement",
                              "src": "7780:95:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5719,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "7943:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7943:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5721,
                                    "name": "_currentQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5688,
                                    "src": "7955:15:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5716,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "7893:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7893:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14747,
                                  "src": "7893:49:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7893:78:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5723,
                              "nodeType": "ExpressionStatement",
                              "src": "7893:78:16"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5726,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5679,
                            "src": "8140:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8168:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8140:29:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5735,
                        "nodeType": "IfStatement",
                        "src": "8136:103:16",
                        "trueBody": {
                          "id": 5734,
                          "nodeType": "Block",
                          "src": "8171:68:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5730,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "8213:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5731,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8213:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5729,
                                  "name": "rewardCarbonVotingBonus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6320,
                                  "src": "8189:23:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 5732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8189:35:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5733,
                              "nodeType": "ExpressionStatement",
                              "src": "8189:35:16"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5760,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "9037:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5761,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5411,
                        "src": "9037:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5757,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "8993:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8993:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5759,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15706,
                      "src": "8993:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 5762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8993:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5763,
                  "nodeType": "ExpressionStatement",
                  "src": "8993:73:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5769,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "9150:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9150:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5772,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26297,
                                "src": "9170:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              ],
                              "id": 5771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9162:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9162:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5774,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5577,
                            "src": "9177:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5766,
                                "name": "dgdToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5399,
                                "src": "9127:8:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5765,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25888,
                              "src": "9121:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 5767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9121:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$25888",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 5768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25870,
                          "src": "9121:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9121:64:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5764,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "9113:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9113:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5777,
                  "nodeType": "ExpressionStatement",
                  "src": "9113:73:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5779,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "9209:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9209:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5781,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "9221:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5782,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "9230:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5783,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "9230:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5778,
                      "name": "LockDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5389,
                      "src": "9201:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 5784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9201:57:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5785,
                  "nodeType": "EmitStatement",
                  "src": "9196:62:16"
                }
              ]
            },
            "documentation": "@notice Function to lock DGD tokens to participate in the DAO\n@dev Users must `approve` the DaoStakeLocking contract to transfer DGDs from them\nContracts are not allowed to participate in DigixDAO\n@param _amount Amount of DGDs to lock",
            "id": 5787,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5580,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "5278:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5278:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5582,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5579,
                  "name": "ifGlobalRewardsSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 972,
                  "src": "5259:18:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5259:42:16"
              }
            ],
            "name": "lockDGDInternal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5577,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5787,
                  "src": "5217:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5576,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5217:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5216:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5583,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5306:0:16"
            },
            "scope": 6321,
            "src": "5192:4073:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5996,
              "nodeType": "Block",
              "src": "9671:3292:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5797,
                            "name": "isLockingPhase",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 933,
                            "src": "9689:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 5798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9689:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5799,
                                "name": "daoUpgradeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1209,
                                "src": "9709:17:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoUpgradeStorage_$17964_$",
                                  "typeString": "function () view returns (contract DaoUpgradeStorage)"
                                }
                              },
                              "id": 5800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9709:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoUpgradeStorage_$17964",
                                "typeString": "contract DaoUpgradeStorage"
                              }
                            },
                            "id": 5801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isReplacedByNewDao",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17886,
                            "src": "9709:38:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 5802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9709:40:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9689:60:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5796,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "9681:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9681:69:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5805,
                  "nodeType": "ExpressionStatement",
                  "src": "9681:69:16"
                },
                {
                  "assignments": [
                    5807
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5807,
                      "name": "_info",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "9843:29:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5806,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "9843:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5812,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5809,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "9895:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9895:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5808,
                      "name": "getStakeInformation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6255,
                      "src": "9875:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9875:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9843:63:16"
                },
                {
                  "assignments": [
                    5814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5814,
                      "name": "_newInfo",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "9916:32:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5813,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "9916:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5820,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5816,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "9967:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9967:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5818,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5807,
                        "src": "9979:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5815,
                      "name": "refreshDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6072,
                      "src": "9951:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9951:34:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9916:69:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5822,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5807,
                            "src": "10249:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5823,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "10249:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10277:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10249:29:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5821,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "10241:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10241:38:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5827,
                  "nodeType": "ExpressionStatement",
                  "src": "10241:38:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5829,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5807,
                            "src": "10298:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5830,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "10298:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5831,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10327:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10298:36:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5828,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "10290:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10290:45:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5834,
                  "nodeType": "ExpressionStatement",
                  "src": "10290:45:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5835,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10345:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5837,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "10345:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5841,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10409:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5838,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "10376:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5839,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "10376:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "10376:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5842,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10376:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10345:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5844,
                  "nodeType": "ExpressionStatement",
                  "src": "10345:72:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5845,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10427:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5847,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "10427:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5851,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10489:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5848,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "10457:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5849,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5409,
                          "src": "10457:27:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "10457:31:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10457:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10427:70:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5854,
                  "nodeType": "ExpressionStatement",
                  "src": "10427:70:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5855,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10507:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5857,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "10507:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5861,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10571:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5858,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "10538:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5859,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5411,
                          "src": "10538:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "10538:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10538:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10507:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5864,
                  "nodeType": "ExpressionStatement",
                  "src": "10507:72:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5868,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "10826:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10826:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5865,
                          "name": "daoRewardsManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5477,
                          "src": "10763:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsManager_$4666_$",
                            "typeString": "function () view returns (contract DaoRewardsManager)"
                          }
                        },
                        "id": 5866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10763:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                          "typeString": "contract DaoRewardsManager"
                        }
                      },
                      "id": 5867,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateRewardsAndReputationBeforeNewQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3767,
                      "src": "10763:62:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 5870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10763:74:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5871,
                  "nodeType": "ExpressionStatement",
                  "src": "10763:74:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5873,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "10946:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10946:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5875,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5807,
                        "src": "10958:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5876,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10965:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5872,
                      "name": "refreshModeratorStatus",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6225,
                      "src": "10923:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$__$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory,struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10923:51:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5878,
                  "nodeType": "ExpressionStatement",
                  "src": "10923:51:16"
                },
                {
                  "assignments": [
                    5880
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5880,
                      "name": "_lastParticipatedQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "10985:32:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5879,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10985:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5887,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5884,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "11064:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11064:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5881,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "11020:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 5882,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11020:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 5883,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastParticipatedQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14571,
                      "src": "11020:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 5886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11020:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10985:90:16"
                },
                {
                  "assignments": [
                    5889
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5889,
                      "name": "_currentQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "11085:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5888,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11085:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5892,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5890,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "11111:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11111:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11085:48:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5893,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "11148:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5894,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "11148:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5896,
                          "name": "CONFIG_MINIMUM_LOCKED_DGD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1454,
                          "src": "11192:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 5895,
                        "name": "getUintConfig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "11178:13:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) view returns (uint256)"
                        }
                      },
                      "id": 5897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11178:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11148:70:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5957,
                    "nodeType": "Block",
                    "src": "12018:596:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5936,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5880,
                            "src": "12211:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5937,
                            "name": "_currentQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5889,
                            "src": "12238:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12211:42:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5956,
                        "nodeType": "IfStatement",
                        "src": "12207:273:16",
                        "trueBody": {
                          "id": 5955,
                          "nodeType": "Block",
                          "src": "12255:225:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5942,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "12331:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5943,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12331:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5944,
                                    "name": "_lastParticipatedQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5880,
                                    "src": "12343:24:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5939,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "12273:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5940,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12273:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updatePreviousLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14767,
                                  "src": "12273:57:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12273:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5946,
                              "nodeType": "ExpressionStatement",
                              "src": "12273:95:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5950,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "12436:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12436:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5952,
                                    "name": "_currentQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5889,
                                    "src": "12448:15:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5947,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "12386:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5948,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12386:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5949,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14747,
                                  "src": "12386:49:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12386:78:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5954,
                              "nodeType": "ExpressionStatement",
                              "src": "12386:78:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 5958,
                  "nodeType": "IfStatement",
                  "src": "11144:1470:16",
                  "trueBody": {
                    "id": 5935,
                    "nodeType": "Block",
                    "src": "11220:792:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5899,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5880,
                            "src": "11470:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5900,
                            "name": "_currentQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5889,
                            "src": "11498:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11470:43:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5916,
                        "nodeType": "IfStatement",
                        "src": "11466:208:16",
                        "trueBody": {
                          "id": 5915,
                          "nodeType": "Block",
                          "src": "11515:159:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5905,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "11583:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5906,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11583:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5910,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26182,
                                          "src": "11647:3:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 5911,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "11647:10:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 5907,
                                          "name": "daoRewardsStorage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1251,
                                          "src": "11595:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                                          }
                                        },
                                        "id": 5908,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11595:19:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                          "typeString": "contract DaoRewardsStorage"
                                        }
                                      },
                                      "id": 5909,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "previousLastParticipatedQuarter",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14575,
                                      "src": "11595:51:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 5912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11595:63:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5902,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "11533:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11533:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14747,
                                  "src": "11533:49:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11533:126:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5914,
                              "nodeType": "ExpressionStatement",
                              "src": "11533:126:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5917,
                              "name": "_newInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5814,
                              "src": "11839:8:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 5919,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5411,
                            "src": "11839:28:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5923,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5814,
                                  "src": "11903:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5924,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5409,
                                "src": "11903:27:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5920,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5814,
                                  "src": "11870:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5921,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5411,
                                "src": "11870:28:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25586,
                              "src": "11870:32:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11870:61:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11839:92:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5927,
                        "nodeType": "ExpressionStatement",
                        "src": "11839:92:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5931,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "11990:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11990:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5928,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "11946:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11946:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removeFromParticipantList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15817,
                            "src": "11946:43:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) external returns (bool)"
                            }
                          },
                          "id": 5933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11946:55:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5934,
                        "nodeType": "ExpressionStatement",
                        "src": "11946:55:16"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5962,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "12661:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12661:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5964,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12673:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5965,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userActualLockedDGD",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5407,
                        "src": "12673:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5966,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12703:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5967,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "12703:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5959,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "12624:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12624:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5961,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateUserDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15753,
                      "src": "12624:36:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256) external"
                      }
                    },
                    "id": 5968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12624:107:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5969,
                  "nodeType": "ExpressionStatement",
                  "src": "12624:107:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5973,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12785:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5974,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5411,
                        "src": "12785:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5970,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "12741:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12741:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15706,
                      "src": "12741:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 5975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12741:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5976,
                  "nodeType": "ExpressionStatement",
                  "src": "12741:73:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5982,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "12858:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12858:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5984,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5789,
                            "src": "12870:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5979,
                                "name": "dgdToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5399,
                                "src": "12839:8:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5978,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25888,
                              "src": "12833:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 5980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12833:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$25888",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 5981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25911,
                          "src": "12833:24:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12833:45:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5977,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "12825:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12825:54:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5987,
                  "nodeType": "ExpressionStatement",
                  "src": "12825:54:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5989,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "12907:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12907:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5991,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5789,
                        "src": "12919:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5992,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12928:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5993,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "12928:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5988,
                      "name": "WithdrawDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5397,
                      "src": "12895:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 5994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12895:61:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5995,
                  "nodeType": "EmitStatement",
                  "src": "12890:66:16"
                }
              ]
            },
            "documentation": "@notice Function to withdraw DGD tokens from this contract (can only be withdrawn in the locking phase of quarter)\n@param _amount Number of DGD tokens to withdraw\n@return {\n\"_success\": \"Boolean, true if the withdrawal was successful, revert otherwise\"\n}",
            "id": 5997,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5792,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "9643:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9643:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5794,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5791,
                  "name": "ifGlobalRewardsSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 972,
                  "src": "9624:18:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9624:42:16"
              }
            ],
            "name": "withdrawDGD",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5789,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5997,
                  "src": "9584:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9584:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9583:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5795,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9671:0:16"
            },
            "scope": 6321,
            "src": "9563:3400:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6004,
              "nodeType": "Block",
              "src": "13387:35:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 6001,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13413:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 6000,
                      "name": "lockDGDInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5787,
                      "src": "13397:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 6002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13397:18:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6003,
                  "nodeType": "ExpressionStatement",
                  "src": "13397:18:16"
                }
              ]
            },
            "documentation": "@notice Function to be called by someone who doesnt change their DGDStake for the next quarter to confirm that they're participating\n@dev This can be done in the middle of the quarter as well.\nIf someone just lets their DGDs sit in the DAO, and don't call this function, they are not counted as a participant in the quarter.",
            "id": 6005,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "confirmContinuedParticipation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13365:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5999,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13387:0:16"
            },
            "scope": 6321,
            "src": "13327:95:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6071,
              "nodeType": "Block",
              "src": "14536:740:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6014,
                        "name": "_infoAfter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6012,
                        "src": "14546:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6016,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "14546:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6017,
                        "name": "_infoBefore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6009,
                        "src": "14578:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6018,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "14578:30:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14546:62:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6020,
                  "nodeType": "ExpressionStatement",
                  "src": "14546:62:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6021,
                        "name": "_infoAfter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6012,
                        "src": "14618:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6023,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "14618:30:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6024,
                        "name": "_infoBefore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6009,
                        "src": "14651:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6025,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "14651:31:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14618:64:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6027,
                  "nodeType": "ExpressionStatement",
                  "src": "14618:64:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6028,
                        "name": "_infoAfter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6012,
                        "src": "14692:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6030,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "14692:30:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6031,
                        "name": "_infoBefore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6009,
                        "src": "14725:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6032,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "14725:31:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14692:64:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6034,
                  "nodeType": "ExpressionStatement",
                  "src": "14692:64:16"
                },
                {
                  "assignments": [
                    6036
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6036,
                      "name": "_currentQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 6072,
                      "src": "14849:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6035,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14849:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6039,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6037,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "14875:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 6038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14875:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14849:48:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6043,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6007,
                          "src": "14955:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6040,
                            "name": "daoRewardsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1251,
                            "src": "14911:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                              "typeString": "function () view returns (contract DaoRewardsStorage)"
                            }
                          },
                          "id": 6041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14911:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                            "typeString": "contract DaoRewardsStorage"
                          }
                        },
                        "id": 6042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lastParticipatedQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14571,
                        "src": "14911:43:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 6044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14911:50:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 6045,
                      "name": "_currentQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6036,
                      "src": "14964:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14911:68:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6070,
                  "nodeType": "IfStatement",
                  "src": "14907:363:16",
                  "trueBody": {
                    "id": 6069,
                    "nodeType": "Block",
                    "src": "14981:289:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6047,
                              "name": "_infoAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6012,
                              "src": "14995:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 6049,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "userLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5409,
                            "src": "14995:29:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6053,
                                  "name": "_infoBefore",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6009,
                                  "src": "15084:11:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 6054,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userActualLockedDGD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5407,
                                "src": "15084:31:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6050,
                                  "name": "daoCalculatorService",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5463,
                                  "src": "15027:20:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                    "typeString": "function () view returns (contract DaoCalculatorService)"
                                  }
                                },
                                "id": 6051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15027:22:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                  "typeString": "contract DaoCalculatorService"
                                }
                              },
                              "id": 6052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateAdditionalLockedDGDStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11712,
                              "src": "15027:56:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 6055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15027:89:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14995:121:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6057,
                        "nodeType": "ExpressionStatement",
                        "src": "14995:121:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6058,
                              "name": "_infoAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6012,
                              "src": "15131:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 6060,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5411,
                            "src": "15131:30:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6064,
                                  "name": "_infoAfter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6012,
                                  "src": "15216:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 6065,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5409,
                                "src": "15216:29:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6061,
                                  "name": "_infoAfter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6012,
                                  "src": "15164:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 6062,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5411,
                                "src": "15164:30:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25610,
                              "src": "15164:34:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15164:95:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15131:128:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6068,
                        "nodeType": "ExpressionStatement",
                        "src": "15131:128:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice This function refreshes the DGD stake of a user before doing any staking action(locking/withdrawing/continuing) in a new quarter\n@dev We need to do this because sometimes, the user locked DGDs in the middle of the previous quarter. Hence, his DGDStake in the record now\nis not correct. Note that this function might be called in the middle of the current quarter as well.\nThis has no effect if the user has already done some staking action in the current quarter\n_infoBefore has the user's current stake information\n_infoAfter will be the user's stake information after refreshing\nThis function updates the totalLockedDGDStake as if, the _user is participating in this quarter\nTherefore, if the _user actually will not qualify as a participant, the caller of this function needs to deduct\n_infoAfter.userLockedDGDStake from _infoAfter.totalLockedDGDStake",
            "id": 6072,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "refreshDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6007,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "14404:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6006,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14404:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6009,
                  "name": "_infoBefore",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "14419:28:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6008,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "14419:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14403:45:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6012,
                  "name": "_infoAfter",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "14496:34:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6011,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "14496:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14495:36:16"
            },
            "scope": 6321,
            "src": "14379:897:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6224,
              "nodeType": "Block",
              "src": "15894:2910:16",
              "statements": [
                {
                  "assignments": [
                    6082
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6082,
                      "name": "_alreadyParticipatedInThisQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 6225,
                      "src": "15904:38:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6081,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "15904:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6091,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6086,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6074,
                          "src": "15989:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6083,
                            "name": "daoRewardsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1251,
                            "src": "15945:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                              "typeString": "function () view returns (contract DaoRewardsStorage)"
                            }
                          },
                          "id": 6084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15945:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                            "typeString": "contract DaoRewardsStorage"
                          }
                        },
                        "id": 6085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lastParticipatedQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14571,
                        "src": "15945:43:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 6087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15945:50:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 6088,
                        "name": "currentQuarterNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1021,
                        "src": "15999:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 6089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15999:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15945:76:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15904:117:16"
                },
                {
                  "assignments": [
                    6093
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6093,
                      "name": "_currentTotalModeratorLockedDGDs",
                      "nodeType": "VariableDeclaration",
                      "scope": 6225,
                      "src": "16031:40:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6092,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16031:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6098,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6094,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "16074:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 6095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16074:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 6096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalModeratorLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15626,
                      "src": "16074:46:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 6097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16074:48:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16031:91:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 6105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6102,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6074,
                          "src": "16174:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6099,
                            "name": "daoStakeStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1167,
                            "src": "16137:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                              "typeString": "function () view returns (contract DaoStakeStorage)"
                            }
                          },
                          "id": 6100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16137:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                            "typeString": "contract DaoStakeStorage"
                          }
                        },
                        "id": 6101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isInModeratorsList",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15893,
                        "src": "16137:36:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) view external returns (bool)"
                        }
                      },
                      "id": 6103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16137:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 6104,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16184:4:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "16137:51:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 6222,
                    "nodeType": "Block",
                    "src": "18292:506:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6188,
                                "name": "_infoAfter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6078,
                                "src": "18339:10:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                }
                              },
                              "id": 6189,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "userLockedDGDStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5409,
                              "src": "18339:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6191,
                                  "name": "CONFIG_MINIMUM_DGD_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1457,
                                  "src": "18386:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6190,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "18372:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18372:47:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18339:80:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6197,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6074,
                                  "src": "18472:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6194,
                                    "name": "daoPointsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1237,
                                    "src": "18439:16:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                      "typeString": "function () view returns (contract DaoPointsStorage)"
                                    }
                                  },
                                  "id": 6195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18439:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                    "typeString": "contract DaoPointsStorage"
                                  }
                                },
                                "id": 6196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReputation",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14484,
                                "src": "18439:32:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 6198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18439:39:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6200,
                                  "name": "CONFIG_MINIMUM_REPUTATION_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1460,
                                  "src": "18496:39:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6199,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "18482:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18482:54:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18439:97:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18339:197:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6221,
                        "nodeType": "IfStatement",
                        "src": "18335:453:16",
                        "trueBody": {
                          "id": 6220,
                          "nodeType": "Block",
                          "src": "18538:250:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6207,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6074,
                                    "src": "18594:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6204,
                                      "name": "daoStakeStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1167,
                                      "src": "18557:15:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                        "typeString": "function () view returns (contract DaoStakeStorage)"
                                      }
                                    },
                                    "id": 6205,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18557:17:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                      "typeString": "contract DaoStakeStorage"
                                    }
                                  },
                                  "id": 6206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addToModeratorList",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15838,
                                  "src": "18557:36:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) external returns (bool)"
                                  }
                                },
                                "id": 6208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18557:43:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6209,
                              "nodeType": "ExpressionStatement",
                              "src": "18557:43:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6215,
                                          "name": "_infoAfter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6078,
                                          "src": "18725:10:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                          }
                                        },
                                        "id": 6216,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "userLockedDGDStake",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5409,
                                        "src": "18725:29:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6213,
                                        "name": "_currentTotalModeratorLockedDGDs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6093,
                                        "src": "18688:32:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6214,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25610,
                                      "src": "18688:36:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6217,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18688:67:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6210,
                                      "name": "daoStakeStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1167,
                                      "src": "18618:15:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                        "typeString": "function () view returns (contract DaoStakeStorage)"
                                      }
                                    },
                                    "id": 6211,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18618:17:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                      "typeString": "contract DaoStakeStorage"
                                    }
                                  },
                                  "id": 6212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateTotalModeratorLockedDGDs",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15725,
                                  "src": "18618:48:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) external"
                                  }
                                },
                                "id": 6218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18618:155:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6219,
                              "nodeType": "ExpressionStatement",
                              "src": "18618:155:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 6223,
                  "nodeType": "IfStatement",
                  "src": "16133:2665:16",
                  "trueBody": {
                    "id": 6187,
                    "nodeType": "Block",
                    "src": "16190:2096:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6106,
                                "name": "_infoAfter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6078,
                                "src": "16275:10:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                }
                              },
                              "id": 6107,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "userLockedDGDStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5409,
                              "src": "16275:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6109,
                                  "name": "CONFIG_MINIMUM_DGD_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1457,
                                  "src": "16321:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6108,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "16307:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16307:47:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16275:79:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6115,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6074,
                                  "src": "16407:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6112,
                                    "name": "daoPointsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1237,
                                    "src": "16374:16:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                      "typeString": "function () view returns (contract DaoPointsStorage)"
                                    }
                                  },
                                  "id": 6113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16374:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                    "typeString": "contract DaoPointsStorage"
                                  }
                                },
                                "id": 6114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReputation",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14484,
                                "src": "16374:32:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 6116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16374:39:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6118,
                                  "name": "CONFIG_MINIMUM_REPUTATION_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1460,
                                  "src": "16430:39:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6117,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "16416:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16416:54:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16374:96:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16275:195:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6185,
                          "nodeType": "Block",
                          "src": "17525:751:16",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 6157,
                                "name": "_alreadyParticipatedInThisQuarter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6082,
                                "src": "17625:33:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 6183,
                                "nodeType": "Block",
                                "src": "17994:268:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6178,
                                                "name": "_infoAfter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6078,
                                                "src": "18191:10:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                }
                                              },
                                              "id": 6179,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "userLockedDGDStake",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5409,
                                              "src": "18191:29:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6176,
                                              "name": "_currentTotalModeratorLockedDGDs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6093,
                                              "src": "18154:32:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6177,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25610,
                                            "src": "18154:36:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6180,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "18154:67:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 6173,
                                            "name": "daoStakeStorage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1167,
                                            "src": "18080:15:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                              "typeString": "function () view returns (contract DaoStakeStorage)"
                                            }
                                          },
                                          "id": 6174,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "18080:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                            "typeString": "contract DaoStakeStorage"
                                          }
                                        },
                                        "id": 6175,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateTotalModeratorLockedDGDs",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15725,
                                        "src": "18080:48:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 6181,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18080:163:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6182,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18080:163:16"
                                  }
                                ]
                              },
                              "id": 6184,
                              "nodeType": "IfStatement",
                              "src": "17621:641:16",
                              "trueBody": {
                                "id": 6172,
                                "nodeType": "Block",
                                "src": "17660:328:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6167,
                                                "name": "_infoAfter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6078,
                                                "src": "17917:10:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                }
                                              },
                                              "id": 6168,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "userLockedDGDStake",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5409,
                                              "src": "17917:29:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 6163,
                                                    "name": "_infoBefore",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6076,
                                                    "src": "17881:11:16",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                    }
                                                  },
                                                  "id": 6164,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "userLockedDGDStake",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 5409,
                                                  "src": "17881:30:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6161,
                                                  "name": "_currentTotalModeratorLockedDGDs",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6093,
                                                  "src": "17844:32:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 6162,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 25586,
                                                "src": "17844:36:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 6165,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "17844:68:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6166,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25610,
                                            "src": "17844:72:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6169,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17844:103:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 6158,
                                            "name": "daoStakeStorage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1167,
                                            "src": "17770:15:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                              "typeString": "function () view returns (contract DaoStakeStorage)"
                                            }
                                          },
                                          "id": 6159,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17770:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                            "typeString": "contract DaoStakeStorage"
                                          }
                                        },
                                        "id": 6160,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateTotalModeratorLockedDGDs",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15725,
                                        "src": "17770:48:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 6170,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17770:199:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6171,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17770:199:16"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 6186,
                        "nodeType": "IfStatement",
                        "src": "16271:2005:16",
                        "trueBody": {
                          "id": 6156,
                          "nodeType": "Block",
                          "src": "16472:1047:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 6134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6128,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 6123,
                                                  "name": "daoStakeStorage",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1167,
                                                  "src": "16900:15:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                                    "typeString": "function () view returns (contract DaoStakeStorage)"
                                                  }
                                                },
                                                "id": 6124,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16900:17:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                                  "typeString": "contract DaoStakeStorage"
                                                }
                                              },
                                              "id": 6125,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "readTotalModerators",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 15959,
                                              "src": "16900:37:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                              }
                                            },
                                            "id": 6126,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "16900:39:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 6127,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16942:1:16",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "16900:43:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 6129,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16899:45:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6132,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "!",
                                          "prefix": true,
                                          "src": "16969:19:16",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 6130,
                                              "name": "isDaoNotReplaced",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 918,
                                              "src": "16970:16:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                                "typeString": "function () view returns (bool)"
                                              }
                                            },
                                            "id": 6131,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "16970:18:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 6133,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16968:21:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "16899:90:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 6122,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    26185,
                                    26186
                                  ],
                                  "referencedDeclaration": 26185,
                                  "src": "16870:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 6135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16870:137:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6136,
                              "nodeType": "ExpressionStatement",
                              "src": "16870:137:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6140,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6074,
                                    "src": "17068:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6137,
                                      "name": "daoStakeStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1167,
                                      "src": "17026:15:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                        "typeString": "function () view returns (contract DaoStakeStorage)"
                                      }
                                    },
                                    "id": 6138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17026:17:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                      "typeString": "contract DaoStakeStorage"
                                    }
                                  },
                                  "id": 6139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeFromModeratorList",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15859,
                                  "src": "17026:41:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) external returns (bool)"
                                  }
                                },
                                "id": 6141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17026:48:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6142,
                              "nodeType": "ExpressionStatement",
                              "src": "17026:48:16"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 6143,
                                "name": "_alreadyParticipatedInThisQuarter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6082,
                                "src": "17264:33:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 6155,
                              "nodeType": "IfStatement",
                              "src": "17260:244:16",
                              "trueBody": {
                                "id": 6154,
                                "nodeType": "Block",
                                "src": "17299:205:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6149,
                                                "name": "_infoBefore",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6076,
                                                "src": "17432:11:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                }
                                              },
                                              "id": 6150,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "userLockedDGDStake",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5409,
                                              "src": "17432:30:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6147,
                                              "name": "_currentTotalModeratorLockedDGDs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6093,
                                              "src": "17395:32:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6148,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25586,
                                            "src": "17395:36:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6151,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17395:68:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 6144,
                                            "name": "daoStakeStorage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1167,
                                            "src": "17321:15:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                              "typeString": "function () view returns (contract DaoStakeStorage)"
                                            }
                                          },
                                          "id": 6145,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17321:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                            "typeString": "contract DaoStakeStorage"
                                          }
                                        },
                                        "id": 6146,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateTotalModeratorLockedDGDs",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15725,
                                        "src": "17321:48:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 6152,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17321:164:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6153,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17321:164:16"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice This function refreshes the Moderator status of a user, to be done right after ANY STEP where a user's reputation or DGDStake is changed\n@dev _infoBefore is the stake information of the user before this transaction, _infoAfter is the stake information after this transaction\nThis function needs to:\n- add/remove addresses from the moderator list accordingly\n- adjust the totalModeratorLockedDGDStake accordingly as well",
            "id": 6225,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "refreshModeratorStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6079,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6074,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6225,
                  "src": "15799:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6073,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15799:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6076,
                  "name": "_infoBefore",
                  "nodeType": "VariableDeclaration",
                  "scope": 6225,
                  "src": "15814:28:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6075,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "15814:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6078,
                  "name": "_infoAfter",
                  "nodeType": "VariableDeclaration",
                  "scope": 6225,
                  "src": "15844:27:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6077,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "15844:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15798:74:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6080,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15894:0:16"
            },
            "scope": 6321,
            "src": "15767:3037:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6254,
              "nodeType": "Block",
              "src": "19059:191:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6232,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6230,
                            "src": "19070:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 6234,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "19070:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6235,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6230,
                            "src": "19097:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 6236,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "userLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5409,
                          "src": "19097:24:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 6237,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "19069:53:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6241,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6227,
                          "src": "19160:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6238,
                            "name": "daoStakeStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1167,
                            "src": "19125:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                              "typeString": "function () view returns (contract DaoStakeStorage)"
                            }
                          },
                          "id": 6239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19125:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                            "typeString": "contract DaoStakeStorage"
                          }
                        },
                        "id": 6240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUserDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15775,
                        "src": "19125:34:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256,uint256)"
                        }
                      },
                      "id": 6242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19125:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "19069:97:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6244,
                  "nodeType": "ExpressionStatement",
                  "src": "19069:97:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6245,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6230,
                        "src": "19176:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6247,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "19176:25:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6248,
                            "name": "daoStakeStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1167,
                            "src": "19204:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                              "typeString": "function () view returns (contract DaoStakeStorage)"
                            }
                          },
                          "id": 6249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19204:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                            "typeString": "contract DaoStakeStorage"
                          }
                        },
                        "id": 6250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15624,
                        "src": "19204:37:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 6251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19204:39:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19176:67:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6253,
                  "nodeType": "ExpressionStatement",
                  "src": "19176:67:16"
                }
              ]
            },
            "documentation": "@notice Get the actualLockedDGD and lockedDGDStake of a user, as well as the totalLockedDGDStake of all users",
            "id": 6255,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getStakeInformation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6227,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6255,
                  "src": "18969:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6226,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18969:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18968:15:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6230,
                  "name": "_info",
                  "nodeType": "VariableDeclaration",
                  "scope": 6255,
                  "src": "19031:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6229,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "19031:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19030:24:16"
            },
            "scope": 6321,
            "src": "18940:310:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6319,
              "nodeType": "Block",
              "src": "19536:1404:16",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6263,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "19668:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6260,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "19627:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 6261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19627:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 6262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "carbonVoteBonusClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15638,
                      "src": "19627:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 6264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19627:47:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6266,
                  "nodeType": "IfStatement",
                  "src": "19623:60:16",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 6259,
                    "id": 6265,
                    "nodeType": "Return",
                    "src": "19676:7:16"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6271,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "19796:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6268,
                            "name": "carbonVoting1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5403,
                            "src": "19775:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6267,
                          "name": "NumberCarbonVoting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7869,
                          "src": "19756:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_NumberCarbonVoting_$7869_$",
                            "typeString": "type(contract NumberCarbonVoting)"
                          }
                        },
                        "id": 6269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19756:33:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_NumberCarbonVoting_$7869",
                          "typeString": "contract NumberCarbonVoting"
                        }
                      },
                      "id": 6270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7868,
                      "src": "19756:39:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 6272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19756:46:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6283,
                  "nodeType": "IfStatement",
                  "src": "19752:173:16",
                  "trueBody": {
                    "id": 6282,
                    "nodeType": "Block",
                    "src": "19804:121:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6276,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6257,
                              "src": "19856:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6278,
                                  "name": "CONFIG_CARBON_VOTE_REPUTATION_BONUS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1628,
                                  "src": "19877:35:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6277,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "19863:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19863:50:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6273,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "19818:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 6274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19818:18:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 6275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increaseReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14384,
                            "src": "19818:37:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 6280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19818:96:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 6281,
                        "nodeType": "ExpressionStatement",
                        "src": "19818:96:16"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6288,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "20037:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6285,
                            "name": "carbonVoting2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5405,
                            "src": "20016:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6284,
                          "name": "NumberCarbonVoting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7869,
                          "src": "19997:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_NumberCarbonVoting_$7869_$",
                            "typeString": "type(contract NumberCarbonVoting)"
                          }
                        },
                        "id": 6286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19997:33:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_NumberCarbonVoting_$7869",
                          "typeString": "contract NumberCarbonVoting"
                        }
                      },
                      "id": 6287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7868,
                      "src": "19997:39:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 6289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19997:46:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6300,
                  "nodeType": "IfStatement",
                  "src": "19993:173:16",
                  "trueBody": {
                    "id": 6299,
                    "nodeType": "Block",
                    "src": "20045:121:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6293,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6257,
                              "src": "20097:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6295,
                                  "name": "CONFIG_CARBON_VOTE_REPUTATION_BONUS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1628,
                                  "src": "20118:35:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6294,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "20104:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20104:50:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6290,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "20059:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 6291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20059:18:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 6292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increaseReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14384,
                            "src": "20059:37:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 6297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20059:96:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 6298,
                        "nodeType": "ExpressionStatement",
                        "src": "20059:96:16"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6304,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "20759:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "20759:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 6309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20798:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 6306,
                              "name": "currentQuarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1021,
                              "src": "20771:20:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 6307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20771:22:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "20771:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20771:29:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6301,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "20697:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 6302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20697:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 6303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateLastQuarterThatReputationWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14813,
                      "src": "20697:61:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 6311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20697:104:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6312,
                  "nodeType": "ExpressionStatement",
                  "src": "20697:104:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6316,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "20927:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6313,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "20883:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 6314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20883:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 6315,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setCarbonVoteBonusClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15687,
                      "src": "20883:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 6317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20883:50:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6318,
                  "nodeType": "ExpressionStatement",
                  "src": "20883:50:16"
                }
              ]
            },
            "documentation": "@notice Reward the voters of carbon voting rounds with initial bonus reputation\n@dev This is only called when they're locking tokens for the first time, enough tokens to be a participant",
            "id": 6320,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rewardCarbonVotingBonus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6258,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6257,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6320,
                  "src": "19500:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6256,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19500:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19499:15:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6259,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19536:0:16"
            },
            "scope": 6321,
            "src": "19467:1473:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 6322,
        "src": "396:20546:16"
      }
    ],
    "src": "0:20943:16"
  },
  "legacyAST": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoStakeLocking.sol",
    "exportedSymbols": {
      "DaoStakeLocking": [
        6321
      ]
    },
    "id": 6322,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5369,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:16"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 5370,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 18629,
        "src": "26:64:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/lib/MathHelper.sol",
        "file": "../lib/MathHelper.sol",
        "id": 5371,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 8536,
        "src": "91:31:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoCommon.sol",
        "file": "../common/DaoCommon.sol",
        "id": 5372,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 885,
        "src": "123:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/service/DaoCalculatorService.sol",
        "file": "../service/DaoCalculatorService.sol",
        "id": 5373,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 12094,
        "src": "157:45:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoRewardsManager.sol",
        "file": "./DaoRewardsManager.sol",
        "id": 5374,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 4667,
        "src": "203:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interface/NumberCarbonVoting.sol",
        "file": "./../interface/NumberCarbonVoting.sol",
        "id": 5375,
        "nodeType": "ImportDirective",
        "scope": 6322,
        "sourceUnit": 7870,
        "src": "237:47:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5376,
              "name": "DaoCommon",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 884,
              "src": "424:9:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoCommon_$884",
                "typeString": "contract DaoCommon"
              }
            },
            "id": 5377,
            "nodeType": "InheritanceSpecifier",
            "src": "424:9:16"
          }
        ],
        "contractDependencies": [
          884,
          1282,
          1629,
          1868,
          1960,
          18628
        ],
        "contractKind": "contract",
        "documentation": "@title Contract to handle staking/withdrawing of DGDs for participation in DAO\n@author Digix Holdings",
        "fullyImplemented": true,
        "id": 6321,
        "linearizedBaseContracts": [
          6321,
          884,
          1282,
          1960,
          1868,
          1629,
          18628
        ],
        "name": "DaoStakeLocking",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 5381,
            "name": "RedeemBadge",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5380,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5379,
                  "indexed": true,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 5381,
                  "src": "459:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5378,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "459:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "458:23:16"
            },
            "src": "441:41:16"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5389,
            "name": "LockDGD",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5383,
                  "indexed": true,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 5389,
                  "src": "501:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "501:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5385,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5389,
                  "src": "524:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5384,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "524:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5387,
                  "indexed": false,
                  "name": "_currentLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 5389,
                  "src": "541:30:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "541:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "500:72:16"
            },
            "src": "487:86:16"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5397,
            "name": "WithdrawDGD",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5391,
                  "indexed": true,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 5397,
                  "src": "596:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5390,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "596:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5393,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5397,
                  "src": "619:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5392,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "619:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5395,
                  "indexed": false,
                  "name": "_currentLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 5397,
                  "src": "636:30:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5394,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "636:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "595:72:16"
            },
            "src": "578:90:16"
          },
          {
            "constant": false,
            "id": 5399,
            "name": "dgdToken",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "674:23:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5398,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "674:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5401,
            "name": "dgdBadgeToken",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "703:28:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5400,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "703:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5403,
            "name": "carbonVoting1",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "928:28:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5402,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "928:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5405,
            "name": "carbonVoting2",
            "nodeType": "VariableDeclaration",
            "scope": 6321,
            "src": "1153:28:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5404,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1153:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "DaoStakeLocking.StakeInformation",
            "id": 5412,
            "members": [
              {
                "constant": false,
                "id": 5407,
                "name": "userActualLockedDGD",
                "nodeType": "VariableDeclaration",
                "scope": 5412,
                "src": "1626:27:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5406,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1626:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5409,
                "name": "userLockedDGDStake",
                "nodeType": "VariableDeclaration",
                "scope": 5412,
                "src": "1937:26:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5408,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1937:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5411,
                "name": "totalLockedDGDStake",
                "nodeType": "VariableDeclaration",
                "scope": 5412,
                "src": "2025:27:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5410,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2025:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "StakeInformation",
            "nodeType": "StructDefinition",
            "scope": 6321,
            "src": "1520:539:16",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5448,
              "nodeType": "Block",
              "src": "2241:219:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5427,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "2264:26:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5428,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5414,
                            "src": "2292:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5426,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "2259:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 5429,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2259:43:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5425,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2251:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2251:52:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5431,
                  "nodeType": "ExpressionStatement",
                  "src": "2251:52:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5432,
                      "name": "dgdToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5399,
                      "src": "2313:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5433,
                      "name": "_dgdToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5416,
                      "src": "2324:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2313:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5435,
                  "nodeType": "ExpressionStatement",
                  "src": "2313:20:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5436,
                      "name": "dgdBadgeToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5401,
                      "src": "2343:13:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5437,
                      "name": "_dgdBadgeToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5418,
                      "src": "2359:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2343:30:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5439,
                  "nodeType": "ExpressionStatement",
                  "src": "2343:30:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5440,
                      "name": "carbonVoting1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5403,
                      "src": "2383:13:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5441,
                      "name": "_carbonVoting1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5420,
                      "src": "2399:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2383:30:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5443,
                  "nodeType": "ExpressionStatement",
                  "src": "2383:30:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5444,
                      "name": "carbonVoting2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5405,
                      "src": "2423:13:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5445,
                      "name": "_carbonVoting2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5422,
                      "src": "2439:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2423:30:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5447,
                  "nodeType": "ExpressionStatement",
                  "src": "2423:30:16"
                }
              ]
            },
            "documentation": null,
            "id": 5449,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5414,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2087:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2087:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5416,
                  "name": "_dgdToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2114:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2114:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5418,
                  "name": "_dgdBadgeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2141:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5417,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2141:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5420,
                  "name": "_carbonVoting1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2173:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5419,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2173:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5422,
                  "name": "_carbonVoting2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2205:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2205:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2077:156:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2241:0:16"
            },
            "scope": 6321,
            "src": "2066:394:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5462,
              "nodeType": "Block",
              "src": "2581:96:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5454,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5452,
                      "src": "2591:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5457,
                              "name": "CONTRACT_SERVICE_DAO_CALCULATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1394,
                              "src": "2637:31:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5456,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "2624:12:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 5458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2624:45:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5455,
                        "name": "DaoCalculatorService",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12093,
                        "src": "2603:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoCalculatorService_$12093_$",
                          "typeString": "type(contract DaoCalculatorService)"
                        }
                      },
                      "id": 5459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2603:67:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "src": "2591:79:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "id": 5461,
                  "nodeType": "ExpressionStatement",
                  "src": "2591:79:16"
                }
              ]
            },
            "documentation": null,
            "id": 5463,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoCalculatorService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5450,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2495:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5452,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 5463,
                  "src": "2545:30:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                    "typeString": "contract DaoCalculatorService"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5451,
                    "name": "DaoCalculatorService",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12093,
                    "src": "2545:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2544:32:16"
            },
            "scope": 6321,
            "src": "2466:211:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5476,
              "nodeType": "Block",
              "src": "2792:90:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5468,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5466,
                      "src": "2802:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                        "typeString": "contract DaoRewardsManager"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5471,
                              "name": "CONTRACT_DAO_REWARDS_MANAGER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1367,
                              "src": "2845:28:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5470,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "2832:12:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 5472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2832:42:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5469,
                        "name": "DaoRewardsManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4666,
                        "src": "2814:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoRewardsManager_$4666_$",
                          "typeString": "type(contract DaoRewardsManager)"
                        }
                      },
                      "id": 5473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2814:61:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                        "typeString": "contract DaoRewardsManager"
                      }
                    },
                    "src": "2802:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                      "typeString": "contract DaoRewardsManager"
                    }
                  },
                  "id": 5475,
                  "nodeType": "ExpressionStatement",
                  "src": "2802:73:16"
                }
              ]
            },
            "documentation": null,
            "id": 5477,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoRewardsManager",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2709:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5466,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 5477,
                  "src": "2759:27:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                    "typeString": "contract DaoRewardsManager"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5465,
                    "name": "DaoRewardsManager",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4666,
                    "src": "2759:17:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                      "typeString": "contract DaoRewardsManager"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2758:29:16"
            },
            "scope": 6321,
            "src": "2683:199:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5557,
              "nodeType": "Block",
              "src": "3395:1386:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3457:44:16",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5484,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "3490:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3490:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5481,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "3458:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3458:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "redeemedBadge",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15634,
                            "src": "3458:31:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view external returns (bool)"
                            }
                          },
                          "id": 5486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3458:43:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616c72656164792072656465656d6564",
                        "id": 5488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3503:18:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b667c5fb21ab92ff32ace44f3883e5c3da353b2cc9df52e6829a4aa5b91d35be",
                          "typeString": "literal_string \"already redeemed\""
                        },
                        "value": "already redeemed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b667c5fb21ab92ff32ace44f3883e5c3da353b2cc9df52e6829a4aa5b91d35be",
                          "typeString": "literal_string \"already redeemed\""
                        }
                      ],
                      "id": 5480,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26186,
                      "src": "3449:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3449:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5490,
                  "nodeType": "ExpressionStatement",
                  "src": "3449:73:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5495,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "4180:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4180:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5492,
                                "name": "daoRewardsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1251,
                                "src": "4124:17:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                  "typeString": "function () view returns (contract DaoRewardsStorage)"
                                }
                              },
                              "id": 5493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4124:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                "typeString": "contract DaoRewardsStorage"
                              }
                            },
                            "id": 5494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastQuarterThatReputationWasUpdated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14583,
                            "src": "4124:55:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4124:67:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5498,
                                  "name": "currentQuarterNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1021,
                                  "src": "4196:20:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 5499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4196:22:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 5500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4221:1:16",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4196:26:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5502,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4195:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4124:99:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657075746174696f6e206e6f742075706461746564",
                        "id": 5504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4237:24:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f7aad258964a8f464c20c063156e3292ab8436e10c078f858f041c7f47091e2",
                          "typeString": "literal_string \"reputation not updated\""
                        },
                        "value": "reputation not updated"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9f7aad258964a8f464c20c063156e3292ab8436e10c078f858f041c7f47091e2",
                          "typeString": "literal_string \"reputation not updated\""
                        }
                      ],
                      "id": 5491,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26186,
                      "src": "4103:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4103:168:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5506,
                  "nodeType": "ExpressionStatement",
                  "src": "4103:168:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5510,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4312:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4312:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5507,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "4282:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4282:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redeemBadge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15669,
                      "src": "4282:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 5512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4282:41:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5513,
                  "nodeType": "ExpressionStatement",
                  "src": "4282:41:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5517,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4371:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4371:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5520,
                            "name": "CONFIG_REPUTATION_POINT_BOOST_FOR_BADGE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1607,
                            "src": "4397:39:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 5519,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "4383:13:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 5521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4383:54:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5514,
                          "name": "daoPointsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1237,
                          "src": "4333:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                            "typeString": "function () view returns (contract DaoPointsStorage)"
                          }
                        },
                        "id": 5515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4333:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                          "typeString": "contract DaoPointsStorage"
                        }
                      },
                      "id": 5516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "increaseReputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14384,
                      "src": "4333:37:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (address,uint256) external returns (uint256,uint256)"
                      }
                    },
                    "id": 5522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4333:105:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "id": 5523,
                  "nodeType": "ExpressionStatement",
                  "src": "4333:105:16"
                },
                {
                  "assignments": [
                    5525
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5525,
                      "name": "_info",
                      "nodeType": "VariableDeclaration",
                      "scope": 5558,
                      "src": "4484:29:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5524,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "4484:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5530,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5527,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4536:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4536:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5526,
                      "name": "getStakeInformation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6255,
                      "src": "4516:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4516:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4484:63:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5532,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4580:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4580:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5534,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5525,
                        "src": "4592:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5535,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5525,
                        "src": "4599:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5531,
                      "name": "refreshModeratorStatus",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6225,
                      "src": "4557:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$__$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory,struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4557:48:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5537,
                  "nodeType": "ExpressionStatement",
                  "src": "4557:48:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5543,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "4705:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4705:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5546,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26297,
                                "src": "4725:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              ],
                              "id": 5545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4717:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4717:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4732:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5540,
                                "name": "dgdBadgeToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5401,
                                "src": "4677:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5539,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25888,
                              "src": "4671:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 5541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4671:20:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$25888",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 5542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25870,
                          "src": "4671:33:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4671:63:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5538,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "4663:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4663:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5551,
                  "nodeType": "ExpressionStatement",
                  "src": "4663:72:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5553,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "4763:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4763:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5552,
                      "name": "RedeemBadge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5381,
                      "src": "4751:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 5555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4751:23:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5556,
                  "nodeType": "EmitStatement",
                  "src": "4746:28:16"
                }
              ]
            },
            "documentation": "@notice Function to convert a DGD Badge to Reputation Points\n@dev The Badge holder can redeem the Badge anytime in the first quarter, or\nOtherwise, the participant must either lock/withdraw/continue in the current quarter first, before he can redeem a badge\nOnly 1 DGD Badge is accepted from an address, so holders with multiple badges\nshould either sell their other badges or redeem reputation to another address",
            "id": 5558,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "redeemBadge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5478,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3373:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3395:0:16"
            },
            "scope": 6321,
            "src": "3353:1428:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5574,
              "nodeType": "Block",
              "src": "4828:86:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5564,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5560,
                          "src": "4846:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4856:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4846:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7a65726f20616d6f756e74",
                        "id": 5567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4859:13:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_213de2103ab57dc723846d919aa5c479660e698c1413b0ae66689049b9877064",
                          "typeString": "literal_string \"zero amount\""
                        },
                        "value": "zero amount"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_213de2103ab57dc723846d919aa5c479660e698c1413b0ae66689049b9877064",
                          "typeString": "literal_string \"zero amount\""
                        }
                      ],
                      "id": 5563,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26186,
                      "src": "4838:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4838:35:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5569,
                  "nodeType": "ExpressionStatement",
                  "src": "4838:35:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5571,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5560,
                        "src": "4899:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5570,
                      "name": "lockDGDInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5787,
                      "src": "4883:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 5572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4883:24:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5573,
                  "nodeType": "ExpressionStatement",
                  "src": "4883:24:16"
                }
              ]
            },
            "documentation": null,
            "id": 5575,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "lockDGD",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5560,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5575,
                  "src": "4804:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4804:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4803:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5562,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4828:0:16"
            },
            "scope": 6321,
            "src": "4787:127:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5786,
              "nodeType": "Block",
              "src": "5306:3959:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 5589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5585,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "5416:3:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5416:10:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5587,
                            "name": "tx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26194,
                            "src": "5430:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_transaction",
                              "typeString": "tx"
                            }
                          },
                          "id": 5588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "origin",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5430:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5416:23:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5584,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "5408:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5408:32:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5591,
                  "nodeType": "ExpressionStatement",
                  "src": "5408:32:16"
                },
                {
                  "assignments": [
                    5593
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5593,
                      "name": "_info",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "5451:29:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5592,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "5451:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5598,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5595,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "5503:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5503:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5594,
                      "name": "getStakeInformation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6255,
                      "src": "5483:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5483:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5451:63:16"
                },
                {
                  "assignments": [
                    5600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5600,
                      "name": "_newInfo",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "5524:32:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5599,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "5524:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5606,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5602,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "5575:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5575:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5604,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5593,
                        "src": "5587:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5601,
                      "name": "refreshDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6072,
                      "src": "5559:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5559:34:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5524:69:16"
                },
                {
                  "assignments": [
                    5608
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5608,
                      "name": "_additionalStake",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "5604:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5607,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5604:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5610,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 5609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5631:1:16",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5604:28:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5611,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5577,
                      "src": "5646:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5612,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5656:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5646:11:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5622,
                  "nodeType": "IfStatement",
                  "src": "5642:101:16",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5614,
                        "name": "_additionalStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5608,
                        "src": "5659:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5618,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5577,
                            "src": "5735:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5615,
                              "name": "daoCalculatorService",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5463,
                              "src": "5678:20:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                "typeString": "function () view returns (contract DaoCalculatorService)"
                              }
                            },
                            "id": 5616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5678:22:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                              "typeString": "contract DaoCalculatorService"
                            }
                          },
                          "id": 5617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "calculateAdditionalLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11712,
                          "src": "5678:56:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view external returns (uint256)"
                          }
                        },
                        "id": 5619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5678:65:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5659:84:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5621,
                    "nodeType": "ExpressionStatement",
                    "src": "5659:84:16"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5623,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "5754:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5625,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "5754:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5629,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5577,
                          "src": "5818:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5626,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "5785:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5627,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "5785:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "5785:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5630,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5785:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5754:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5632,
                  "nodeType": "ExpressionStatement",
                  "src": "5754:72:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5633,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "5836:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5635,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "5836:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5639,
                          "name": "_additionalStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5608,
                          "src": "5898:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5636,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "5866:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5637,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5409,
                          "src": "5866:27:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5638,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "5866:31:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5866:49:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5836:79:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5642,
                  "nodeType": "ExpressionStatement",
                  "src": "5836:79:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5643,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "5925:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5645,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "5925:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5649,
                          "name": "_additionalStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5608,
                          "src": "5989:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5646,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "5956:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5647,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5411,
                          "src": "5956:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "5956:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5956:50:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5925:81:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5652,
                  "nodeType": "ExpressionStatement",
                  "src": "5925:81:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5656,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6168:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6168:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5653,
                          "name": "daoRewardsManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5477,
                          "src": "6105:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsManager_$4666_$",
                            "typeString": "function () view returns (contract DaoRewardsManager)"
                          }
                        },
                        "id": 5654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6105:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                          "typeString": "contract DaoRewardsManager"
                        }
                      },
                      "id": 5655,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateRewardsAndReputationBeforeNewQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3767,
                      "src": "6105:62:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 5658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6105:74:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5659,
                  "nodeType": "ExpressionStatement",
                  "src": "6105:74:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5663,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6227:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6227:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5665,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "6239:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5666,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userActualLockedDGD",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5407,
                        "src": "6239:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5667,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "6269:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5668,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "6269:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5660,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "6190:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6190:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5662,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateUserDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15753,
                      "src": "6190:36:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256) external"
                      }
                    },
                    "id": 5669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6190:107:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5670,
                  "nodeType": "ExpressionStatement",
                  "src": "6190:107:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5672,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6407:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6407:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5674,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5593,
                        "src": "6419:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5675,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "6426:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5671,
                      "name": "refreshModeratorStatus",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6225,
                      "src": "6384:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$__$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory,struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6384:51:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5677,
                  "nodeType": "ExpressionStatement",
                  "src": "6384:51:16"
                },
                {
                  "assignments": [
                    5679
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5679,
                      "name": "_lastParticipatedQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "6446:32:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5678,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6446:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5686,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5683,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "6525:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6525:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5680,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "6481:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 5681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6481:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 5682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastParticipatedQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14571,
                      "src": "6481:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 5685,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6481:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6446:90:16"
                },
                {
                  "assignments": [
                    5688
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5688,
                      "name": "_currentQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5787,
                      "src": "6546:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5687,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6546:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5691,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5689,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "6572:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6572:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6546:48:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5692,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5600,
                        "src": "6936:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5693,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "6936:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5695,
                          "name": "CONFIG_MINIMUM_LOCKED_DGD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1454,
                          "src": "6981:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 5694,
                        "name": "getUintConfig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "6967:13:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) view returns (uint256)"
                        }
                      },
                      "id": 5696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6967:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6936:71:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5755,
                    "nodeType": "Block",
                    "src": "8255:728:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5737,
                              "name": "_newInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5600,
                              "src": "8811:8:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 5739,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5411,
                            "src": "8811:28:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5743,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5600,
                                  "src": "8875:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5744,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5409,
                                "src": "8875:27:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5740,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5600,
                                  "src": "8842:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5741,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5411,
                                "src": "8842:28:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25586,
                              "src": "8842:32:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8842:61:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8811:92:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5747,
                        "nodeType": "ExpressionStatement",
                        "src": "8811:92:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5751,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "8961:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8961:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5748,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "8917:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8917:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removeFromParticipantList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15817,
                            "src": "8917:43:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) external returns (bool)"
                            }
                          },
                          "id": 5753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8917:55:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5754,
                        "nodeType": "ExpressionStatement",
                        "src": "8917:55:16"
                      }
                    ]
                  },
                  "id": 5756,
                  "nodeType": "IfStatement",
                  "src": "6932:2051:16",
                  "trueBody": {
                    "id": 5736,
                    "nodeType": "Block",
                    "src": "7009:1240:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5701,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "7062:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7062:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5698,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "7023:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7023:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "addToParticipantList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15796,
                            "src": "7023:38:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) external returns (bool)"
                            }
                          },
                          "id": 5703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7023:50:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5704,
                        "nodeType": "ExpressionStatement",
                        "src": "7023:50:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5705,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5679,
                            "src": "7718:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5706,
                            "name": "_currentQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5688,
                            "src": "7745:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7718:42:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5725,
                        "nodeType": "IfStatement",
                        "src": "7714:272:16",
                        "trueBody": {
                          "id": 5724,
                          "nodeType": "Block",
                          "src": "7762:224:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5711,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "7838:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5712,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7838:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5713,
                                    "name": "_lastParticipatedQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5679,
                                    "src": "7850:24:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5708,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "7780:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7780:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updatePreviousLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14767,
                                  "src": "7780:57:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7780:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5715,
                              "nodeType": "ExpressionStatement",
                              "src": "7780:95:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5719,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "7943:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7943:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5721,
                                    "name": "_currentQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5688,
                                    "src": "7955:15:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5716,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "7893:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7893:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14747,
                                  "src": "7893:49:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7893:78:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5723,
                              "nodeType": "ExpressionStatement",
                              "src": "7893:78:16"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5726,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5679,
                            "src": "8140:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8168:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8140:29:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5735,
                        "nodeType": "IfStatement",
                        "src": "8136:103:16",
                        "trueBody": {
                          "id": 5734,
                          "nodeType": "Block",
                          "src": "8171:68:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5730,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "8213:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5731,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8213:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5729,
                                  "name": "rewardCarbonVotingBonus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6320,
                                  "src": "8189:23:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 5732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8189:35:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5733,
                              "nodeType": "ExpressionStatement",
                              "src": "8189:35:16"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5760,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "9037:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5761,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5411,
                        "src": "9037:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5757,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "8993:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8993:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5759,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15706,
                      "src": "8993:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 5762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8993:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5763,
                  "nodeType": "ExpressionStatement",
                  "src": "8993:73:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5769,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "9150:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9150:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5772,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26297,
                                "src": "9170:4:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DaoStakeLocking_$6321",
                                  "typeString": "contract DaoStakeLocking"
                                }
                              ],
                              "id": 5771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9162:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9162:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5774,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5577,
                            "src": "9177:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5766,
                                "name": "dgdToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5399,
                                "src": "9127:8:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5765,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25888,
                              "src": "9121:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 5767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9121:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$25888",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 5768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25870,
                          "src": "9121:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9121:64:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5764,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "9113:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9113:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5777,
                  "nodeType": "ExpressionStatement",
                  "src": "9113:73:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5779,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "9209:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9209:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5781,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "9221:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5782,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5600,
                          "src": "9230:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5783,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "9230:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5778,
                      "name": "LockDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5389,
                      "src": "9201:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 5784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9201:57:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5785,
                  "nodeType": "EmitStatement",
                  "src": "9196:62:16"
                }
              ]
            },
            "documentation": "@notice Function to lock DGD tokens to participate in the DAO\n@dev Users must `approve` the DaoStakeLocking contract to transfer DGDs from them\nContracts are not allowed to participate in DigixDAO\n@param _amount Amount of DGDs to lock",
            "id": 5787,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5580,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "5278:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5278:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5582,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5579,
                  "name": "ifGlobalRewardsSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 972,
                  "src": "5259:18:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5259:42:16"
              }
            ],
            "name": "lockDGDInternal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5577,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5787,
                  "src": "5217:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5576,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5217:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5216:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5583,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5306:0:16"
            },
            "scope": 6321,
            "src": "5192:4073:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5996,
              "nodeType": "Block",
              "src": "9671:3292:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5797,
                            "name": "isLockingPhase",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 933,
                            "src": "9689:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 5798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9689:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5799,
                                "name": "daoUpgradeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1209,
                                "src": "9709:17:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoUpgradeStorage_$17964_$",
                                  "typeString": "function () view returns (contract DaoUpgradeStorage)"
                                }
                              },
                              "id": 5800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9709:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoUpgradeStorage_$17964",
                                "typeString": "contract DaoUpgradeStorage"
                              }
                            },
                            "id": 5801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isReplacedByNewDao",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17886,
                            "src": "9709:38:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 5802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9709:40:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9689:60:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5796,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "9681:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9681:69:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5805,
                  "nodeType": "ExpressionStatement",
                  "src": "9681:69:16"
                },
                {
                  "assignments": [
                    5807
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5807,
                      "name": "_info",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "9843:29:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5806,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "9843:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5812,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5809,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "9895:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9895:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5808,
                      "name": "getStakeInformation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6255,
                      "src": "9875:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9875:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9843:63:16"
                },
                {
                  "assignments": [
                    5814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5814,
                      "name": "_newInfo",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "9916:32:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                        "typeString": "struct DaoStakeLocking.StakeInformation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5813,
                        "name": "StakeInformation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5412,
                        "src": "9916:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5820,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5816,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "9967:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9967:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5818,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5807,
                        "src": "9979:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5815,
                      "name": "refreshDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6072,
                      "src": "9951:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$_t_struct$_StakeInformation_$5412_memory_ptr_$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory) view returns (struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9951:34:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9916:69:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5822,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5807,
                            "src": "10249:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5823,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "10249:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10277:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10249:29:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5821,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "10241:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10241:38:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5827,
                  "nodeType": "ExpressionStatement",
                  "src": "10241:38:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5829,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5807,
                            "src": "10298:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5830,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "10298:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5831,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10327:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10298:36:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5828,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "10290:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10290:45:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5834,
                  "nodeType": "ExpressionStatement",
                  "src": "10290:45:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5835,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10345:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5837,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "10345:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5841,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10409:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5838,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "10376:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5839,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "10376:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "10376:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5842,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10376:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10345:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5844,
                  "nodeType": "ExpressionStatement",
                  "src": "10345:72:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5845,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10427:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5847,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "10427:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5851,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10489:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5848,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "10457:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5849,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5409,
                          "src": "10457:27:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "10457:31:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10457:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10427:70:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5854,
                  "nodeType": "ExpressionStatement",
                  "src": "10427:70:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5855,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10507:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5857,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "10507:28:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5861,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5789,
                          "src": "10571:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5858,
                            "name": "_newInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "10538:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 5859,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5411,
                          "src": "10538:28:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "10538:32:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10538:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10507:72:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5864,
                  "nodeType": "ExpressionStatement",
                  "src": "10507:72:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5868,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "10826:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10826:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5865,
                          "name": "daoRewardsManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5477,
                          "src": "10763:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsManager_$4666_$",
                            "typeString": "function () view returns (contract DaoRewardsManager)"
                          }
                        },
                        "id": 5866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10763:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                          "typeString": "contract DaoRewardsManager"
                        }
                      },
                      "id": 5867,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateRewardsAndReputationBeforeNewQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3767,
                      "src": "10763:62:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 5870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10763:74:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5871,
                  "nodeType": "ExpressionStatement",
                  "src": "10763:74:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5873,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "10946:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10946:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5875,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5807,
                        "src": "10958:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5876,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "10965:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      ],
                      "id": 5872,
                      "name": "refreshModeratorStatus",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6225,
                      "src": "10923:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_StakeInformation_$5412_memory_ptr_$_t_struct$_StakeInformation_$5412_memory_ptr_$returns$__$",
                        "typeString": "function (address,struct DaoStakeLocking.StakeInformation memory,struct DaoStakeLocking.StakeInformation memory)"
                      }
                    },
                    "id": 5877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10923:51:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5878,
                  "nodeType": "ExpressionStatement",
                  "src": "10923:51:16"
                },
                {
                  "assignments": [
                    5880
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5880,
                      "name": "_lastParticipatedQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "10985:32:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5879,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10985:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5887,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5884,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "11064:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11064:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5881,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "11020:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 5882,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11020:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 5883,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastParticipatedQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14571,
                      "src": "11020:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 5886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11020:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10985:90:16"
                },
                {
                  "assignments": [
                    5889
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5889,
                      "name": "_currentQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 5997,
                      "src": "11085:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5888,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11085:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5892,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5890,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "11111:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11111:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11085:48:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5893,
                        "name": "_newInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5814,
                        "src": "11148:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 5894,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "11148:27:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5896,
                          "name": "CONFIG_MINIMUM_LOCKED_DGD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1454,
                          "src": "11192:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 5895,
                        "name": "getUintConfig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1281,
                        "src": "11178:13:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) view returns (uint256)"
                        }
                      },
                      "id": 5897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11178:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11148:70:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5957,
                    "nodeType": "Block",
                    "src": "12018:596:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5936,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5880,
                            "src": "12211:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5937,
                            "name": "_currentQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5889,
                            "src": "12238:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12211:42:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5956,
                        "nodeType": "IfStatement",
                        "src": "12207:273:16",
                        "trueBody": {
                          "id": 5955,
                          "nodeType": "Block",
                          "src": "12255:225:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5942,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "12331:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5943,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12331:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5944,
                                    "name": "_lastParticipatedQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5880,
                                    "src": "12343:24:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5939,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "12273:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5940,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12273:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updatePreviousLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14767,
                                  "src": "12273:57:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12273:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5946,
                              "nodeType": "ExpressionStatement",
                              "src": "12273:95:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5950,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "12436:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12436:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5952,
                                    "name": "_currentQuarter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5889,
                                    "src": "12448:15:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5947,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "12386:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5948,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12386:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5949,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14747,
                                  "src": "12386:49:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12386:78:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5954,
                              "nodeType": "ExpressionStatement",
                              "src": "12386:78:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 5958,
                  "nodeType": "IfStatement",
                  "src": "11144:1470:16",
                  "trueBody": {
                    "id": 5935,
                    "nodeType": "Block",
                    "src": "11220:792:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5899,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5880,
                            "src": "11470:24:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5900,
                            "name": "_currentQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5889,
                            "src": "11498:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11470:43:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5916,
                        "nodeType": "IfStatement",
                        "src": "11466:208:16",
                        "trueBody": {
                          "id": 5915,
                          "nodeType": "Block",
                          "src": "11515:159:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5905,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26182,
                                      "src": "11583:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5906,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11583:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5910,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26182,
                                          "src": "11647:3:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 5911,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "11647:10:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 5907,
                                          "name": "daoRewardsStorage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1251,
                                          "src": "11595:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                                          }
                                        },
                                        "id": 5908,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11595:19:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                          "typeString": "contract DaoRewardsStorage"
                                        }
                                      },
                                      "id": 5909,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "previousLastParticipatedQuarter",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14575,
                                      "src": "11595:51:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 5912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11595:63:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5902,
                                      "name": "daoRewardsStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1251,
                                      "src": "11533:17:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                        "typeString": "function () view returns (contract DaoRewardsStorage)"
                                      }
                                    },
                                    "id": 5903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11533:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                      "typeString": "contract DaoRewardsStorage"
                                    }
                                  },
                                  "id": 5904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateLastParticipatedQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14747,
                                  "src": "11533:49:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11533:126:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5914,
                              "nodeType": "ExpressionStatement",
                              "src": "11533:126:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5917,
                              "name": "_newInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5814,
                              "src": "11839:8:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 5919,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5411,
                            "src": "11839:28:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5923,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5814,
                                  "src": "11903:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5924,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5409,
                                "src": "11903:27:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5920,
                                  "name": "_newInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5814,
                                  "src": "11870:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 5921,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5411,
                                "src": "11870:28:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25586,
                              "src": "11870:32:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11870:61:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11839:92:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5927,
                        "nodeType": "ExpressionStatement",
                        "src": "11839:92:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5931,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26182,
                                "src": "11990:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11990:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5928,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "11946:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 5929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11946:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 5930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removeFromParticipantList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15817,
                            "src": "11946:43:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) external returns (bool)"
                            }
                          },
                          "id": 5933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11946:55:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5934,
                        "nodeType": "ExpressionStatement",
                        "src": "11946:55:16"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5962,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "12661:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12661:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5964,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12673:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5965,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userActualLockedDGD",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5407,
                        "src": "12673:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5966,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12703:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5967,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "12703:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5959,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "12624:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12624:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5961,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateUserDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15753,
                      "src": "12624:36:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256) external"
                      }
                    },
                    "id": 5968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12624:107:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5969,
                  "nodeType": "ExpressionStatement",
                  "src": "12624:107:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5973,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12785:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5974,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5411,
                        "src": "12785:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5970,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "12741:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 5971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12741:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 5972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15706,
                      "src": "12741:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 5975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12741:73:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5976,
                  "nodeType": "ExpressionStatement",
                  "src": "12741:73:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5982,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "12858:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12858:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5984,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5789,
                            "src": "12870:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5979,
                                "name": "dgdToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5399,
                                "src": "12839:8:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5978,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25888,
                              "src": "12833:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 5980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12833:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$25888",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 5981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25911,
                          "src": "12833:24:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12833:45:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5977,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "12825:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12825:54:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5987,
                  "nodeType": "ExpressionStatement",
                  "src": "12825:54:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5989,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "12907:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12907:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5991,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5789,
                        "src": "12919:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5992,
                          "name": "_newInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "12928:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                          }
                        },
                        "id": 5993,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "userLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5409,
                        "src": "12928:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5988,
                      "name": "WithdrawDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5397,
                      "src": "12895:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 5994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12895:61:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5995,
                  "nodeType": "EmitStatement",
                  "src": "12890:66:16"
                }
              ]
            },
            "documentation": "@notice Function to withdraw DGD tokens from this contract (can only be withdrawn in the locking phase of quarter)\n@param _amount Number of DGD tokens to withdraw\n@return {\n\"_success\": \"Boolean, true if the withdrawal was successful, revert otherwise\"\n}",
            "id": 5997,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5792,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "9643:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 5793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9643:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5794,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5791,
                  "name": "ifGlobalRewardsSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 972,
                  "src": "9624:18:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9624:42:16"
              }
            ],
            "name": "withdrawDGD",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5789,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5997,
                  "src": "9584:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9584:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9583:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5795,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9671:0:16"
            },
            "scope": 6321,
            "src": "9563:3400:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6004,
              "nodeType": "Block",
              "src": "13387:35:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 6001,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13413:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 6000,
                      "name": "lockDGDInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5787,
                      "src": "13397:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 6002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13397:18:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6003,
                  "nodeType": "ExpressionStatement",
                  "src": "13397:18:16"
                }
              ]
            },
            "documentation": "@notice Function to be called by someone who doesnt change their DGDStake for the next quarter to confirm that they're participating\n@dev This can be done in the middle of the quarter as well.\nIf someone just lets their DGDs sit in the DAO, and don't call this function, they are not counted as a participant in the quarter.",
            "id": 6005,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "confirmContinuedParticipation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13365:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5999,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13387:0:16"
            },
            "scope": 6321,
            "src": "13327:95:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6071,
              "nodeType": "Block",
              "src": "14536:740:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6014,
                        "name": "_infoAfter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6012,
                        "src": "14546:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6016,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "14546:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6017,
                        "name": "_infoBefore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6009,
                        "src": "14578:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6018,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5409,
                      "src": "14578:30:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14546:62:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6020,
                  "nodeType": "ExpressionStatement",
                  "src": "14546:62:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6021,
                        "name": "_infoAfter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6012,
                        "src": "14618:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6023,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "14618:30:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6024,
                        "name": "_infoBefore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6009,
                        "src": "14651:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6025,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userActualLockedDGD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5407,
                      "src": "14651:31:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14618:64:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6027,
                  "nodeType": "ExpressionStatement",
                  "src": "14618:64:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6028,
                        "name": "_infoAfter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6012,
                        "src": "14692:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6030,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "14692:30:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6031,
                        "name": "_infoBefore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6009,
                        "src": "14725:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6032,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "14725:31:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14692:64:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6034,
                  "nodeType": "ExpressionStatement",
                  "src": "14692:64:16"
                },
                {
                  "assignments": [
                    6036
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6036,
                      "name": "_currentQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 6072,
                      "src": "14849:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6035,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14849:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6039,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6037,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "14875:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 6038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14875:22:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14849:48:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6043,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6007,
                          "src": "14955:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6040,
                            "name": "daoRewardsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1251,
                            "src": "14911:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                              "typeString": "function () view returns (contract DaoRewardsStorage)"
                            }
                          },
                          "id": 6041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14911:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                            "typeString": "contract DaoRewardsStorage"
                          }
                        },
                        "id": 6042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lastParticipatedQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14571,
                        "src": "14911:43:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 6044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14911:50:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 6045,
                      "name": "_currentQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6036,
                      "src": "14964:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14911:68:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6070,
                  "nodeType": "IfStatement",
                  "src": "14907:363:16",
                  "trueBody": {
                    "id": 6069,
                    "nodeType": "Block",
                    "src": "14981:289:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6047,
                              "name": "_infoAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6012,
                              "src": "14995:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 6049,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "userLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5409,
                            "src": "14995:29:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6053,
                                  "name": "_infoBefore",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6009,
                                  "src": "15084:11:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 6054,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userActualLockedDGD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5407,
                                "src": "15084:31:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6050,
                                  "name": "daoCalculatorService",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5463,
                                  "src": "15027:20:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                    "typeString": "function () view returns (contract DaoCalculatorService)"
                                  }
                                },
                                "id": 6051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15027:22:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                  "typeString": "contract DaoCalculatorService"
                                }
                              },
                              "id": 6052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateAdditionalLockedDGDStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11712,
                              "src": "15027:56:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 6055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15027:89:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14995:121:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6057,
                        "nodeType": "ExpressionStatement",
                        "src": "14995:121:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6058,
                              "name": "_infoAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6012,
                              "src": "15131:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                "typeString": "struct DaoStakeLocking.StakeInformation memory"
                              }
                            },
                            "id": 6060,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalLockedDGDStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5411,
                            "src": "15131:30:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6064,
                                  "name": "_infoAfter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6012,
                                  "src": "15216:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 6065,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5409,
                                "src": "15216:29:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6061,
                                  "name": "_infoAfter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6012,
                                  "src": "15164:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                    "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                  }
                                },
                                "id": 6062,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalLockedDGDStake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5411,
                                "src": "15164:30:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25610,
                              "src": "15164:34:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15164:95:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15131:128:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6068,
                        "nodeType": "ExpressionStatement",
                        "src": "15131:128:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice This function refreshes the DGD stake of a user before doing any staking action(locking/withdrawing/continuing) in a new quarter\n@dev We need to do this because sometimes, the user locked DGDs in the middle of the previous quarter. Hence, his DGDStake in the record now\nis not correct. Note that this function might be called in the middle of the current quarter as well.\nThis has no effect if the user has already done some staking action in the current quarter\n_infoBefore has the user's current stake information\n_infoAfter will be the user's stake information after refreshing\nThis function updates the totalLockedDGDStake as if, the _user is participating in this quarter\nTherefore, if the _user actually will not qualify as a participant, the caller of this function needs to deduct\n_infoAfter.userLockedDGDStake from _infoAfter.totalLockedDGDStake",
            "id": 6072,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "refreshDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6007,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "14404:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6006,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14404:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6009,
                  "name": "_infoBefore",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "14419:28:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6008,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "14419:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14403:45:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6012,
                  "name": "_infoAfter",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "14496:34:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6011,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "14496:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14495:36:16"
            },
            "scope": 6321,
            "src": "14379:897:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6224,
              "nodeType": "Block",
              "src": "15894:2910:16",
              "statements": [
                {
                  "assignments": [
                    6082
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6082,
                      "name": "_alreadyParticipatedInThisQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 6225,
                      "src": "15904:38:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6081,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "15904:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6091,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6086,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6074,
                          "src": "15989:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6083,
                            "name": "daoRewardsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1251,
                            "src": "15945:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                              "typeString": "function () view returns (contract DaoRewardsStorage)"
                            }
                          },
                          "id": 6084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15945:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                            "typeString": "contract DaoRewardsStorage"
                          }
                        },
                        "id": 6085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lastParticipatedQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14571,
                        "src": "15945:43:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 6087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15945:50:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 6088,
                        "name": "currentQuarterNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1021,
                        "src": "15999:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 6089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15999:22:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15945:76:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15904:117:16"
                },
                {
                  "assignments": [
                    6093
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6093,
                      "name": "_currentTotalModeratorLockedDGDs",
                      "nodeType": "VariableDeclaration",
                      "scope": 6225,
                      "src": "16031:40:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6092,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16031:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6098,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6094,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "16074:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 6095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16074:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 6096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalModeratorLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15626,
                      "src": "16074:46:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 6097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16074:48:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16031:91:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 6105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6102,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6074,
                          "src": "16174:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6099,
                            "name": "daoStakeStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1167,
                            "src": "16137:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                              "typeString": "function () view returns (contract DaoStakeStorage)"
                            }
                          },
                          "id": 6100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16137:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                            "typeString": "contract DaoStakeStorage"
                          }
                        },
                        "id": 6101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isInModeratorsList",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15893,
                        "src": "16137:36:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) view external returns (bool)"
                        }
                      },
                      "id": 6103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16137:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 6104,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16184:4:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "16137:51:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 6222,
                    "nodeType": "Block",
                    "src": "18292:506:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6188,
                                "name": "_infoAfter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6078,
                                "src": "18339:10:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                }
                              },
                              "id": 6189,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "userLockedDGDStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5409,
                              "src": "18339:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6191,
                                  "name": "CONFIG_MINIMUM_DGD_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1457,
                                  "src": "18386:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6190,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "18372:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18372:47:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18339:80:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6197,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6074,
                                  "src": "18472:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6194,
                                    "name": "daoPointsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1237,
                                    "src": "18439:16:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                      "typeString": "function () view returns (contract DaoPointsStorage)"
                                    }
                                  },
                                  "id": 6195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18439:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                    "typeString": "contract DaoPointsStorage"
                                  }
                                },
                                "id": 6196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReputation",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14484,
                                "src": "18439:32:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 6198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18439:39:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6200,
                                  "name": "CONFIG_MINIMUM_REPUTATION_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1460,
                                  "src": "18496:39:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6199,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "18482:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18482:54:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18439:97:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18339:197:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6221,
                        "nodeType": "IfStatement",
                        "src": "18335:453:16",
                        "trueBody": {
                          "id": 6220,
                          "nodeType": "Block",
                          "src": "18538:250:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6207,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6074,
                                    "src": "18594:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6204,
                                      "name": "daoStakeStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1167,
                                      "src": "18557:15:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                        "typeString": "function () view returns (contract DaoStakeStorage)"
                                      }
                                    },
                                    "id": 6205,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18557:17:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                      "typeString": "contract DaoStakeStorage"
                                    }
                                  },
                                  "id": 6206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addToModeratorList",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15838,
                                  "src": "18557:36:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) external returns (bool)"
                                  }
                                },
                                "id": 6208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18557:43:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6209,
                              "nodeType": "ExpressionStatement",
                              "src": "18557:43:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6215,
                                          "name": "_infoAfter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6078,
                                          "src": "18725:10:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                            "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                          }
                                        },
                                        "id": 6216,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "userLockedDGDStake",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5409,
                                        "src": "18725:29:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6213,
                                        "name": "_currentTotalModeratorLockedDGDs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6093,
                                        "src": "18688:32:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6214,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25610,
                                      "src": "18688:36:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6217,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18688:67:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6210,
                                      "name": "daoStakeStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1167,
                                      "src": "18618:15:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                        "typeString": "function () view returns (contract DaoStakeStorage)"
                                      }
                                    },
                                    "id": 6211,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18618:17:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                      "typeString": "contract DaoStakeStorage"
                                    }
                                  },
                                  "id": 6212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateTotalModeratorLockedDGDs",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15725,
                                  "src": "18618:48:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) external"
                                  }
                                },
                                "id": 6218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18618:155:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6219,
                              "nodeType": "ExpressionStatement",
                              "src": "18618:155:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 6223,
                  "nodeType": "IfStatement",
                  "src": "16133:2665:16",
                  "trueBody": {
                    "id": 6187,
                    "nodeType": "Block",
                    "src": "16190:2096:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6106,
                                "name": "_infoAfter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6078,
                                "src": "16275:10:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                }
                              },
                              "id": 6107,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "userLockedDGDStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5409,
                              "src": "16275:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6109,
                                  "name": "CONFIG_MINIMUM_DGD_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1457,
                                  "src": "16321:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6108,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "16307:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16307:47:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16275:79:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6115,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6074,
                                  "src": "16407:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6112,
                                    "name": "daoPointsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1237,
                                    "src": "16374:16:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                      "typeString": "function () view returns (contract DaoPointsStorage)"
                                    }
                                  },
                                  "id": 6113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16374:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                    "typeString": "contract DaoPointsStorage"
                                  }
                                },
                                "id": 6114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReputation",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14484,
                                "src": "16374:32:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 6116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16374:39:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6118,
                                  "name": "CONFIG_MINIMUM_REPUTATION_FOR_MODERATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1460,
                                  "src": "16430:39:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6117,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "16416:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16416:54:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16374:96:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16275:195:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6185,
                          "nodeType": "Block",
                          "src": "17525:751:16",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 6157,
                                "name": "_alreadyParticipatedInThisQuarter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6082,
                                "src": "17625:33:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 6183,
                                "nodeType": "Block",
                                "src": "17994:268:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6178,
                                                "name": "_infoAfter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6078,
                                                "src": "18191:10:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                }
                                              },
                                              "id": 6179,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "userLockedDGDStake",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5409,
                                              "src": "18191:29:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6176,
                                              "name": "_currentTotalModeratorLockedDGDs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6093,
                                              "src": "18154:32:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6177,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25610,
                                            "src": "18154:36:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6180,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "18154:67:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 6173,
                                            "name": "daoStakeStorage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1167,
                                            "src": "18080:15:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                              "typeString": "function () view returns (contract DaoStakeStorage)"
                                            }
                                          },
                                          "id": 6174,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "18080:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                            "typeString": "contract DaoStakeStorage"
                                          }
                                        },
                                        "id": 6175,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateTotalModeratorLockedDGDs",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15725,
                                        "src": "18080:48:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 6181,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18080:163:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6182,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18080:163:16"
                                  }
                                ]
                              },
                              "id": 6184,
                              "nodeType": "IfStatement",
                              "src": "17621:641:16",
                              "trueBody": {
                                "id": 6172,
                                "nodeType": "Block",
                                "src": "17660:328:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6167,
                                                "name": "_infoAfter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6078,
                                                "src": "17917:10:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                }
                                              },
                                              "id": 6168,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "userLockedDGDStake",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5409,
                                              "src": "17917:29:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 6163,
                                                    "name": "_infoBefore",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6076,
                                                    "src": "17881:11:16",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                      "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                    }
                                                  },
                                                  "id": 6164,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "userLockedDGDStake",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 5409,
                                                  "src": "17881:30:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6161,
                                                  "name": "_currentTotalModeratorLockedDGDs",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6093,
                                                  "src": "17844:32:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 6162,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 25586,
                                                "src": "17844:36:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 6165,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "17844:68:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6166,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25610,
                                            "src": "17844:72:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6169,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17844:103:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 6158,
                                            "name": "daoStakeStorage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1167,
                                            "src": "17770:15:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                              "typeString": "function () view returns (contract DaoStakeStorage)"
                                            }
                                          },
                                          "id": 6159,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17770:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                            "typeString": "contract DaoStakeStorage"
                                          }
                                        },
                                        "id": 6160,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateTotalModeratorLockedDGDs",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15725,
                                        "src": "17770:48:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 6170,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17770:199:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6171,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17770:199:16"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 6186,
                        "nodeType": "IfStatement",
                        "src": "16271:2005:16",
                        "trueBody": {
                          "id": 6156,
                          "nodeType": "Block",
                          "src": "16472:1047:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 6134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6128,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 6123,
                                                  "name": "daoStakeStorage",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1167,
                                                  "src": "16900:15:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                                    "typeString": "function () view returns (contract DaoStakeStorage)"
                                                  }
                                                },
                                                "id": 6124,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16900:17:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                                  "typeString": "contract DaoStakeStorage"
                                                }
                                              },
                                              "id": 6125,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "readTotalModerators",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 15959,
                                              "src": "16900:37:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                              }
                                            },
                                            "id": 6126,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "16900:39:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 6127,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16942:1:16",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "16900:43:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 6129,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16899:45:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6132,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "!",
                                          "prefix": true,
                                          "src": "16969:19:16",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 6130,
                                              "name": "isDaoNotReplaced",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 918,
                                              "src": "16970:16:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                                "typeString": "function () view returns (bool)"
                                              }
                                            },
                                            "id": 6131,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "16970:18:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 6133,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16968:21:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "16899:90:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 6122,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    26185,
                                    26186
                                  ],
                                  "referencedDeclaration": 26185,
                                  "src": "16870:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 6135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16870:137:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6136,
                              "nodeType": "ExpressionStatement",
                              "src": "16870:137:16"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6140,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6074,
                                    "src": "17068:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6137,
                                      "name": "daoStakeStorage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1167,
                                      "src": "17026:15:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                        "typeString": "function () view returns (contract DaoStakeStorage)"
                                      }
                                    },
                                    "id": 6138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17026:17:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                      "typeString": "contract DaoStakeStorage"
                                    }
                                  },
                                  "id": 6139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeFromModeratorList",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15859,
                                  "src": "17026:41:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) external returns (bool)"
                                  }
                                },
                                "id": 6141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17026:48:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6142,
                              "nodeType": "ExpressionStatement",
                              "src": "17026:48:16"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 6143,
                                "name": "_alreadyParticipatedInThisQuarter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6082,
                                "src": "17264:33:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 6155,
                              "nodeType": "IfStatement",
                              "src": "17260:244:16",
                              "trueBody": {
                                "id": 6154,
                                "nodeType": "Block",
                                "src": "17299:205:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6149,
                                                "name": "_infoBefore",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6076,
                                                "src": "17432:11:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                                                  "typeString": "struct DaoStakeLocking.StakeInformation memory"
                                                }
                                              },
                                              "id": 6150,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "userLockedDGDStake",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5409,
                                              "src": "17432:30:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6147,
                                              "name": "_currentTotalModeratorLockedDGDs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6093,
                                              "src": "17395:32:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6148,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25586,
                                            "src": "17395:36:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6151,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17395:68:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 6144,
                                            "name": "daoStakeStorage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1167,
                                            "src": "17321:15:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                              "typeString": "function () view returns (contract DaoStakeStorage)"
                                            }
                                          },
                                          "id": 6145,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17321:17:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                            "typeString": "contract DaoStakeStorage"
                                          }
                                        },
                                        "id": 6146,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateTotalModeratorLockedDGDs",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15725,
                                        "src": "17321:48:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 6152,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17321:164:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6153,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17321:164:16"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice This function refreshes the Moderator status of a user, to be done right after ANY STEP where a user's reputation or DGDStake is changed\n@dev _infoBefore is the stake information of the user before this transaction, _infoAfter is the stake information after this transaction\nThis function needs to:\n- add/remove addresses from the moderator list accordingly\n- adjust the totalModeratorLockedDGDStake accordingly as well",
            "id": 6225,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "refreshModeratorStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6079,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6074,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6225,
                  "src": "15799:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6073,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15799:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6076,
                  "name": "_infoBefore",
                  "nodeType": "VariableDeclaration",
                  "scope": 6225,
                  "src": "15814:28:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6075,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "15814:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6078,
                  "name": "_infoAfter",
                  "nodeType": "VariableDeclaration",
                  "scope": 6225,
                  "src": "15844:27:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6077,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "15844:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15798:74:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6080,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15894:0:16"
            },
            "scope": 6321,
            "src": "15767:3037:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6254,
              "nodeType": "Block",
              "src": "19059:191:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6232,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6230,
                            "src": "19070:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 6234,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "userActualLockedDGD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5407,
                          "src": "19070:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6235,
                            "name": "_info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6230,
                            "src": "19097:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                              "typeString": "struct DaoStakeLocking.StakeInformation memory"
                            }
                          },
                          "id": 6236,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "userLockedDGDStake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5409,
                          "src": "19097:24:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 6237,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "19069:53:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6241,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6227,
                          "src": "19160:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6238,
                            "name": "daoStakeStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1167,
                            "src": "19125:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                              "typeString": "function () view returns (contract DaoStakeStorage)"
                            }
                          },
                          "id": 6239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19125:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                            "typeString": "contract DaoStakeStorage"
                          }
                        },
                        "id": 6240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUserDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15775,
                        "src": "19125:34:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256,uint256)"
                        }
                      },
                      "id": 6242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19125:41:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "19069:97:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6244,
                  "nodeType": "ExpressionStatement",
                  "src": "19069:97:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6245,
                        "name": "_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6230,
                        "src": "19176:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                          "typeString": "struct DaoStakeLocking.StakeInformation memory"
                        }
                      },
                      "id": 6247,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5411,
                      "src": "19176:25:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6248,
                            "name": "daoStakeStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1167,
                            "src": "19204:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                              "typeString": "function () view returns (contract DaoStakeStorage)"
                            }
                          },
                          "id": 6249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19204:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                            "typeString": "contract DaoStakeStorage"
                          }
                        },
                        "id": 6250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalLockedDGDStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15624,
                        "src": "19204:37:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 6251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19204:39:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19176:67:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6253,
                  "nodeType": "ExpressionStatement",
                  "src": "19176:67:16"
                }
              ]
            },
            "documentation": "@notice Get the actualLockedDGD and lockedDGDStake of a user, as well as the totalLockedDGDStake of all users",
            "id": 6255,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getStakeInformation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6227,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6255,
                  "src": "18969:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6226,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18969:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18968:15:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6230,
                  "name": "_info",
                  "nodeType": "VariableDeclaration",
                  "scope": 6255,
                  "src": "19031:22:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInformation_$5412_memory_ptr",
                    "typeString": "struct DaoStakeLocking.StakeInformation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6229,
                    "name": "StakeInformation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5412,
                    "src": "19031:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInformation_$5412_storage_ptr",
                      "typeString": "struct DaoStakeLocking.StakeInformation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19030:24:16"
            },
            "scope": 6321,
            "src": "18940:310:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6319,
              "nodeType": "Block",
              "src": "19536:1404:16",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6263,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "19668:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6260,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "19627:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 6261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19627:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 6262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "carbonVoteBonusClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15638,
                      "src": "19627:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 6264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19627:47:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6266,
                  "nodeType": "IfStatement",
                  "src": "19623:60:16",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 6259,
                    "id": 6265,
                    "nodeType": "Return",
                    "src": "19676:7:16"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6271,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "19796:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6268,
                            "name": "carbonVoting1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5403,
                            "src": "19775:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6267,
                          "name": "NumberCarbonVoting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7869,
                          "src": "19756:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_NumberCarbonVoting_$7869_$",
                            "typeString": "type(contract NumberCarbonVoting)"
                          }
                        },
                        "id": 6269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19756:33:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_NumberCarbonVoting_$7869",
                          "typeString": "contract NumberCarbonVoting"
                        }
                      },
                      "id": 6270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7868,
                      "src": "19756:39:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 6272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19756:46:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6283,
                  "nodeType": "IfStatement",
                  "src": "19752:173:16",
                  "trueBody": {
                    "id": 6282,
                    "nodeType": "Block",
                    "src": "19804:121:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6276,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6257,
                              "src": "19856:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6278,
                                  "name": "CONFIG_CARBON_VOTE_REPUTATION_BONUS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1628,
                                  "src": "19877:35:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6277,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "19863:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19863:50:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6273,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "19818:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 6274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19818:18:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 6275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increaseReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14384,
                            "src": "19818:37:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 6280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19818:96:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 6281,
                        "nodeType": "ExpressionStatement",
                        "src": "19818:96:16"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6288,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "20037:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6285,
                            "name": "carbonVoting2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5405,
                            "src": "20016:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6284,
                          "name": "NumberCarbonVoting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7869,
                          "src": "19997:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_NumberCarbonVoting_$7869_$",
                            "typeString": "type(contract NumberCarbonVoting)"
                          }
                        },
                        "id": 6286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19997:33:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_NumberCarbonVoting_$7869",
                          "typeString": "contract NumberCarbonVoting"
                        }
                      },
                      "id": 6287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7868,
                      "src": "19997:39:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 6289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19997:46:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6300,
                  "nodeType": "IfStatement",
                  "src": "19993:173:16",
                  "trueBody": {
                    "id": 6299,
                    "nodeType": "Block",
                    "src": "20045:121:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6293,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6257,
                              "src": "20097:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6295,
                                  "name": "CONFIG_CARBON_VOTE_REPUTATION_BONUS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1628,
                                  "src": "20118:35:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6294,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "20104:13:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 6296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20104:50:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6290,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "20059:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 6291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20059:18:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 6292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increaseReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14384,
                            "src": "20059:37:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 6297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20059:96:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 6298,
                        "nodeType": "ExpressionStatement",
                        "src": "20059:96:16"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6304,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "20759:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "20759:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 6309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20798:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 6306,
                              "name": "currentQuarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1021,
                              "src": "20771:20:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 6307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20771:22:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "20771:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20771:29:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6301,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "20697:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 6302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20697:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 6303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateLastQuarterThatReputationWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14813,
                      "src": "20697:61:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 6311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20697:104:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6312,
                  "nodeType": "ExpressionStatement",
                  "src": "20697:104:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6316,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6257,
                        "src": "20927:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6313,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "20883:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 6314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20883:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 6315,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setCarbonVoteBonusClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15687,
                      "src": "20883:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 6317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20883:50:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6318,
                  "nodeType": "ExpressionStatement",
                  "src": "20883:50:16"
                }
              ]
            },
            "documentation": "@notice Reward the voters of carbon voting rounds with initial bonus reputation\n@dev This is only called when they're locking tokens for the first time, enough tokens to be a participant",
            "id": 6320,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "rewardCarbonVotingBonus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6258,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6257,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 6320,
                  "src": "19500:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6256,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19500:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19499:15:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 6259,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19536:0:16"
            },
            "scope": 6321,
            "src": "19467:1473:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 6322,
        "src": "396:20546:16"
      }
    ],
    "src": "0:20943:16"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {},
      "links": {},
      "address": "0x804dd74335018427262eb7a90cfe73b084eca75f",
      "transactionHash": "0x9361d1dcfbf5f106681abd3203cc55de8d1b91f7e8393b3905c57b7470b81dfe"
    }
  },
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-16T08:53:49.690Z"
}