{
  "contractName": "DaoRewardsManager",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "resolver",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ADDRESS_DGX_TOKEN",
      "outputs": [
        {
          "name": "",
          "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": "_configKey",
          "type": "bytes32"
        }
      ],
      "name": "getUintConfig",
      "outputs": [
        {
          "name": "_configValue",
          "type": "uint256"
        }
      ],
      "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"
    },
    {
      "inputs": [
        {
          "name": "_resolver",
          "type": "address"
        },
        {
          "name": "_dgxAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_quarterNumber",
          "type": "uint256"
        }
      ],
      "name": "StartNewQuarter",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newDaoRewardsManager",
          "type": "address"
        }
      ],
      "name": "moveDGXsToNewDao",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "claimRewards",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "updateRewardsAndReputationBeforeNewQuarter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_operations",
          "type": "uint256"
        }
      ],
      "name": "calculateGlobalRewardsBeforeNewQuarter",
      "outputs": [
        {
          "name": "_done",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260006001026003906000191690556000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70726f706f73616c5f73746174655f70726570726f706f73616c0000000000006005906000191690557f70726f706f73616c5f73746174655f64726166740000000000000000000000006006906000191690557f70726f706f73616c5f73746174655f6d6f6465726174656400000000000000006007906000191690557f70726f706f73616c5f73746174655f6f6e676f696e67000000000000000000006008906000191690557f70726f706f73616c5f73746174655f636c6f73656400000000000000000000006009906000191690557f70726f706f73616c5f73746174655f6172636869766564000000000000000000600a906000191690556001600b556002600c556003600d556001600e556002600f5560036010557f696e7465725f6467645f696400000000000000000000000000000000000000006011906000191690557f696e7465725f6d6f645f6467645f6964000000000000000000000000000000006012906000191690557f696e7465725f626f6e75735f63616c63756c6174696f6e5f69640000000000006013906000191690557f64616f00000000000000000000000000000000000000000000000000000000006014906000191690557f64616f3a7370656369616c3a70726f706f73616c0000000000000000000000006015906000191690557f64616f3a7374616b652d6c6f636b696e670000000000000000000000000000006016906000191690557f64616f3a766f74696e67000000000000000000000000000000000000000000006017906000191690557f64616f3a766f74696e673a636c61696d730000000000000000000000000000006018906000191690557f64616f3a73766f74696e673a636c61696d7300000000000000000000000000006019906000191690557f64616f3a6964656e746974790000000000000000000000000000000000000000601a906000191690557f64616f3a726577617264732d6d616e6167657200000000000000000000000000601b906000191690557f64616f3a726577617264732d6578747261730000000000000000000000000000601c906000191690557f64616f3a726f6c65730000000000000000000000000000000000000000000000601d906000191690557f64616f3a66756e64696e672d6d616e6167657200000000000000000000000000601e906000191690557f64616f3a77686974656c697374696e6700000000000000000000000000000000601f906000191690557f64616f3a696e666f726d6174696f6e00000000000000000000000000000000006020906000191690557f736572766963653a726f6c6500000000000000000000000000000000000000006021906000191690557f736572766963653a64616f3a696e666f000000000000000000000000000000006022906000191690557f736572766963653a64616f3a6c697374696e67000000000000000000000000006023906000191690557f736572766963653a64616f3a63616c63756c61746f72000000000000000000006024906000191690557f73746f726167653a64616f0000000000000000000000000000000000000000006025906000191690557f73746f726167653a64616f3a636f756e746572000000000000000000000000006026906000191690557f73746f726167653a64616f3a75706772616465000000000000000000000000006027906000191690557f73746f726167653a64616f3a6964656e746974790000000000000000000000006028906000191690557f73746f726167653a64616f3a706f696e747300000000000000000000000000006029906000191690557f73746f726167653a64616f3a7370656369616c00000000000000000000000000602a906000191690557f73746f726167653a64616f3a636f6e6669670000000000000000000000000000602b906000191690557f73746f726167653a64616f3a7374616b65000000000000000000000000000000602c906000191690557f73746f726167653a64616f3a7265776172647300000000000000000000000000602d906000191690557f73746f726167653a64616f3a77686974656c697374696e670000000000000000602e906000191690557f73746f726167653a696e7465726d6564696174653a726573756c747300000000602f906000191690557f743a6467640000000000000000000000000000000000000000000000000000006030906000191690557f743a6467780000000000000000000000000000000000000000000000000000006031906000191690557f743a6261646765000000000000000000000000000000000000000000000000006032906000191690556001603360006101000a81548160ff021916908360ff1602179055506002603360016101000a81548160ff021916908360ff1602179055506003603360026101000a81548160ff021916908360ff1602179055506004603360036101000a81548160ff021916908360ff1602179055506276a7006034557f6d696e5f6467645f7061727469636970616e74000000000000000000000000006035906000191690557f6d696e5f6467645f6d6f64657261746f720000000000000000000000000000006036906000191690557f6d696e5f72657075746174696f6e5f6d6f64657261746f7200000000000000006037906000191690557f6c6f636b696e675f70686173655f6475726174696f6e000000000000000000006038906000191690557f717561727465725f6475726174696f6e000000000000000000000000000000006039906000191690557f766f74696e675f636f6d6d69745f706861736500000000000000000000000000603a906000191690557f766f74696e675f70686173655f746f74616c0000000000000000000000000000603b906000191690557f696e746572696d5f766f74696e675f636f6d6d69745f70686173650000000000603c906000191690557f696e746572696d5f766f74696e675f70686173655f746f74616c000000000000603d906000191690557f64726166745f71756f72756d5f66697865645f6e756d657261746f7200000000603e906000191690557f64726166745f71756f72756d5f66697865645f64656e6f6d696e61746f720000603f906000191690557f64726166745f71756f72756d5f73666163746f725f6e756d657261746f7200006040906000191690557f64726166745f71756f72756d5f73666163746f725f64656e6f6d696e61746f726041906000191690557f766f74655f71756f72756d5f66697865645f6e756d657261746f7200000000006042906000191690557f766f74655f71756f72756d5f66697865645f64656e6f6d696e61746f720000006043906000191690557f766f74655f71756f72756d5f73666163746f725f6e756d657261746f720000006044906000191690557f766f74655f71756f72756d5f73666163746f725f64656e6f6d696e61746f72006045906000191690557f66696e616c5f7265776172645f73666163746f725f6e756d657261746f7200006046906000191690557f66696e616c5f7265776172645f73666163746f725f64656e6f6d696e61746f726047906000191690557f64726166745f71756f74615f6e756d657261746f7200000000000000000000006048906000191690557f64726166745f71756f74615f64656e6f6d696e61746f720000000000000000006049906000191690557f766f74696e675f71756f74615f6e756d657261746f7200000000000000000000604a906000191690557f766f74696e675f71756f74615f64656e6f6d696e61746f720000000000000000604b906000191690557f6d696e696d616c5f717000000000000000000000000000000000000000000000604c906000191690557f717561727465725f706f696e745f7363616c696e675f666163746f7200000000604d906000191690557f7265705f706f696e745f7363616c696e675f666163746f720000000000000000604e906000191690557f6d696e696d616c5f6d6f645f7170000000000000000000000000000000000000604f906000191690557f6d6f645f71705f7363616c696e675f666163746f7200000000000000000000006050906000191690557f6d6f645f7265705f706f696e745f7363616c696e675f666163746f72000000006051906000191690557f717561727465725f706f696e745f64726166745f766f746500000000000000006052906000191690557f717561727465725f706f696e745f766f746500000000000000000000000000006053906000191690557f717561727465725f706f696e745f696e746572696d5f766f74650000000000006054906000191690557f715f705f6d696c6573746f6e655f636f6d706c6574696f6e00000000000000006055906000191690557f626f6e75735f72657075746174696f6e5f6e756d657261746f720000000000006056906000191690557f626f6e75735f72657075746174696f6e5f64656e6f6d696e61746f72000000006057906000191690557f7370656369616c5f70726f706f73616c5f636f6d6d69745f70686173650000006058906000191690557f7370656369616c5f70726f706f73616c5f70686173655f746f74616c000000006059906000191690557f636f6e6669675f7370656369616c5f71756f74615f6e756d657261746f720000605a906000191690557f636f6e6669675f7370656369616c5f71756f74615f64656e6f6d696e61746f72605b906000191690557f7370656369616c5f71756f72756d5f6e756d657261746f720000000000000000605c906000191690557f7370656369616c5f71756f72756d5f64656e6f6d696e61746f72000000000000605d906000191690557f636f6e6669675f6d61785f72657075746174696f6e5f646564756374696f6e00605e906000191690557f636f6e6669675f70756e6973686d656e745f6e6f745f6c6f636b696e67000000605f906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f6e756d00000000006060906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f64656e00000000006061906000191690557f636f6e6669675f6d61785f6d5f72705f646564756374696f6e000000000000006062906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f6e756d0000006063906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f64656e0000006064906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f6e756d000000000000000000006065906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f64656e000000000000000000006066906000191690557f636f6e6669675f64726166745f766f74696e675f7068617365000000000000006067906000191690557f636f6e6669675f72705f626f6f73745f7065725f6261646765000000000000006068906000191690557f636f6e6669675f636c61696d696e675f646561646c696e6500000000000000006069906000191690557f636f6e6669675f70726570726f706f73616c5f636f6c6c61746572616c000000606a906000191690557f636f6e6669675f6d61785f66756e64696e675f6e6f6e44696769780000000000606b906000191690557f636f6e6669675f6d61785f6d696c6573746f6e65735f6e6f6e44696769780000606c906000191690557f636f6e6669675f6e6f6e44696769785f70726f706f73616c5f63617000000000606d906000191690557f636f6e6669675f646561645f6475726174696f6e000000000000000000000000606e906000191690557f636f6e6669675f63765f72657075746174696f6e000000000000000000000000606f906000191690553480156200113457600080fd5b50604051604080620060ee83398101806040528101908080519060200190929190805190602001909291905050506200117f601b548362001373640100000000026401000000009004565b15156200118b57600080fd5b80607060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620011e562001604640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff1663521fcb6660016200121e604c5462001627640100000000026401000000009004565b6200123a604d5462001627640100000000026401000000009004565b62001256604e5462001627640100000000026401000000009004565b600062001274604f5462001627640100000000026401000000009004565b6200129060505462001627640100000000026401000000009004565b620012ac60515462001627640100000000026401000000009004565b6000426000806040518d63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c50505050505050505050505050600060405180830381600087803b1580156200135257600080fd5b505af115801562001367573d6000803e3d6000fd5b505050505050620017ff565b6000808273ffffffffffffffffffffffffffffffffffffffff16636d19a8826040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620013db57600080fd5b505af1158015620013f0573d6000803e3d6000fd5b505050506040513d60208110156200140757600080fd5b81019080805190602001909291905050509050600015158115151415620015f85730600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600181600019169055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0f6ef4a600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620015a557600080fd5b505af1158015620015ba573d6000803e3d6000fd5b505050506040513d6020811015620015d157600080fd5b81019080805190602001909291905050501515620015ee57600080fd5b60019150620015fd565b600091505b5092915050565b600062001622602d54620016fd640100000000026401000000009004565b905090565b600062001642620017dc640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff1663734c1168836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015620016b957600080fd5b505af1158015620016ce573d6000803e3d6000fd5b505050506040513d6020811015620016e557600080fd5b81019080805190602001909291905050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156200179857600080fd5b505af1158015620017ad573d6000803e3d6000fd5b505050506040513d6020811015620017c457600080fd5b81019080805190602001909291905050509050919050565b6000620017fa602b54620016fd640100000000026401000000009004565b905090565b6148df806200180f6000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec146100e05780630d12144b14610137578063372500ab1461018e5780633943380c146101a55780633f5a7583146101d85780633f83acff1461021b57806349da49bc1461028c578063560a25ea146102cf57806368533060146102fa5780637bf4a98d146103295780637d6fed801461036e5780637f6a26b61461039d578063b1e2b9dd146103c8578063d70d93581461040d578063db4ecbc11461043c575b600080fd5b3480156100ec57600080fd5b506100f5610493565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014357600080fd5b5061014c6104b8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019a57600080fd5b506101a36104de565b005b3480156101b157600080fd5b506101ba610ac7565b60405180826000191660001916815260200191505060405180910390f35b3480156101e457600080fd5b50610219600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610acd565b005b34801561022757600080fd5b5061024a6004803603810190808035600019169060200190929190505050610ce4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029857600080fd5b506102cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc0565b005b3480156102db57600080fd5b506102e4610ded565b6040518082815260200191505060405180910390f35b34801561030657600080fd5b5061030f610dfd565b604051808215151515815260200191505060405180910390f35b34801561033557600080fd5b5061035460048036038101908080359060200190929190505050610e29565b604051808215151515815260200191505060405180910390f35b34801561037a57600080fd5b5061038361131e565b604051808215151515815260200191505060405180910390f35b3480156103a957600080fd5b506103b2611339565b6040518082815260200191505060405180910390f35b3480156103d457600080fd5b506103f76004803603810190808035600019169060200190929190505050611349565b6040518082815260200191505060405180910390f35b34801561041957600080fd5b5061042261140b565b604051808215151515815260200191505060405180910390f35b34801561044857600080fd5b506104516114b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006104eb611339565b60018111156105b45760006104fe6114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050506040513d602081101561059657600080fd5b81019080805190602001909291905050501115156105b357600080fd5b5b6105bc61140b565b15156105c757600080fd5b3393506105d3846114f1565b9050809350506107a0620151806107926105eb6114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d66106f660016106136114df565b73ffffffffffffffffffffffffffffffffffffffff166327ddd3ae8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156106ad57600080fd5b505af11580156106c1573d6000803e3d6000fd5b505050506040513d60208110156106d757600080fd5b8101908080519060200190929190505050611be090919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b505050506040513d602081101561077257600080fd5b810190808051906020019092919050505042611bfc90919063ffffffff16565b611c1590919063ffffffff16565b91506107aa6114df565b73ffffffffffffffffffffffffffffffffffffffff1663d715d6f5846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561081857600080fd5b505af115801561082c573d6000803e3d6000fd5b505050506108fb61083b611c2b565b73ffffffffffffffffffffffffffffffffffffffff1663120c52ef85856040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b505050506040513d60208110156108db57600080fd5b810190808051906020019092919050505084611bfc90919063ffffffff16565b92506109056114df565b73ffffffffffffffffffffffffffffffffffffffff16636a8cfd098560006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b505050506040513d6020811015610aaf57600080fd5b81019080805190602001909291905050505050505050565b60015481565b6000610ada601454611c3d565b1515610ae557600080fd5b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050506040513d6020811015610bcc57600080fd5b81019080805190602001909291905050509050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050506040513d6020811015610cce57600080fd5b8101908080519060200190929190505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b505050506040513d6020811015610da857600080fd5b81019080805190602001909291905050509050919050565b610dcb601654611c3d565b1515610dd657600080fd5b610ddf816114f1565b5050610dea81611d47565b50565b6000610df8426124ac565b905090565b6000610e0761140b565b8015610e245750610e19603854611349565b610e21610ded565b10155b905090565b6000610e3361470c565b610e3b614787565b6000610e45612595565b1515610e5057600080fd5b610e5861140b565b1515610e6357600080fd5b6000610e6d61268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ed057600080fd5b505af1158015610ee4573d6000803e3d6000fd5b505050506040513d6020811015610efa57600080fd5b810190808051906020019092919050505014151515610f1857600080fd5b610f2061131e565b1515610f2b57600080fd5b6000610f356114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6610f58611339565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d6020811015610fd457600080fd5b8101908080519060200190929190505050141515610ff157600080fd5b61100c6001610ffe611339565b611bfc90919063ffffffff16565b8360000181815250506000836000015111151561102857600080fd5b611035836000015161269f565b8360c00181905250611045612975565b73ffffffffffffffffffffffffffffffffffffffff166312d0c13b61106f85600001516000612987565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050608060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b505050506040513d60808110156110f357600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505090915090508360600185602001828152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050506111728360008785612a33565b905082610120015115156111895760009350611316565b611191612975565b73ffffffffffffffffffffffffffffffffffffffff166312d0c13b6111bb85600001516001612987565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050608060405180830381600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b505050506040513d608081101561123f57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505090915090508360600185604001828152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050506112be8360018385612a33565b5082610140015115156112d45760009350611316565b6112dd83613c02565b600193506112e9611339565b7ffc76425595a72efa6bd6c8f55ce8a0e01f5a789fc399e5d779ae1942f3875e5c60405160405180910390a25b505050919050565b600061132b603854611349565b611333610ded565b10905090565b60006113444261405a565b905090565b600061135361415d565b73ffffffffffffffffffffffffffffffffffffffff1663734c1168836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156113c957600080fd5b505af11580156113dd573d6000803e3d6000fd5b505050506040513d60208110156113f357600080fd5b81019080805190602001909291905050509050919050565b600061141561268d565b73ffffffffffffffffffffffffffffffffffffffff16638bc865fd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050506040513d60208110156114a257600080fd5b810190808051906020019092919050505015905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114ec602d54610ce4565b905090565b6000806114fc6147c6565b60008060008061150b8861416f565b94506115156114df565b73ffffffffffffffffffffffffffffffffffffffff166378af89ac896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b505050506040513d60208110156115d957600080fd5b8101908080519060200190929190505050955084600001516115f9611339565b148061160d57508460200151856000015111155b1561161e5760008696509650611bd6565b6117d4620151806117c66116306114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d661166360018b60200151611be090919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156116b557600080fd5b505af11580156116c9573d6000803e3d6000fd5b505050506040513d60208110156116df57600080fd5b81019080805190602001909291905050506116f86114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d661172b60018c60000151611be090919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d60208110156117a757600080fd5b8101908080519060200190929190505050611bfc90919063ffffffff16565b611c1590919063ffffffff16565b93506117de611c2b565b73ffffffffffffffffffffffffffffffffffffffff1663120c52ef87866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b15801561185457600080fd5b505af1158015611868573d6000803e3d6000fd5b505050506040513d602081101561187e57600080fd5b810190808051906020019092919050505092506118a48387611bfc90919063ffffffff16565b95506118ae6114df565b73ffffffffffffffffffffffffffffffffffffffff1663d715d6f5846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561191c57600080fd5b505af1158015611930573d6000803e3d6000fd5b5050505061193c61435d565b73ffffffffffffffffffffffffffffffffffffffff1663fd56ff83896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b1580156119d557600080fd5b505af11580156119e9573d6000803e3d6000fd5b505050506040513d60408110156119ff57600080fd5b8101908080519060200190929190805190602001909291905050508092508193505050611a4781611a398489611be090919063ffffffff16565b611be090919063ffffffff16565b9550611a516114df565b73ffffffffffffffffffffffffffffffffffffffff16636a8cfd0989886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611af357600080fd5b505af1158015611b07573d6000803e3d6000fd5b50505050611b136114df565b73ffffffffffffffffffffffffffffffffffffffff1663d8048c9d8987600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b50505050600196505b5050505050915091565b60008183019050828110151515611bf357fe5b80905092915050565b6000828211151515611c0a57fe5b818303905092915050565b60008183811515611c2257fe5b04905092915050565b6000611c38602454610ce4565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611cd757600080fd5b505af1158015611ceb573d6000803e3d6000fd5b505050506040513d6020811015611d0157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806000611d546114df565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611dee57600080fd5b505af1158015611e02573d6000803e3d6000fd5b505050506040513d6020811015611e1857600080fd5b81019080805190602001909291905050509250611e336114df565b73ffffffffffffffffffffffffffffffffffffffff1663bd695d21856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ecd57600080fd5b505af1158015611ee1573d6000803e3d6000fd5b505050506040513d6020811015611ef757600080fd5b81019080805190602001909291905050509150611f12611339565b611f26600184611be090919063ffffffff16565b101515611f32576124a6565b82611f47600184611be090919063ffffffff16565b14156122685761206784611f5961436f565b73ffffffffffffffffffffffffffffffffffffffff166393383c5187876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b505050506040513d602081101561202557600080fd5b8101908080519060200190929190505050612041604c54611349565b61204c605e54611349565b612057606054611349565b612062606154611349565b614381565b61206f6145ee565b73ffffffffffffffffffffffffffffffffffffffff166388954a6c856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050506040513d602081101561213357600080fd5b810190808051906020019092919050505015612264576122638461215561436f565b73ffffffffffffffffffffffffffffffffffffffff1663a5a9f5bb87876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156121f757600080fd5b505af115801561220b573d6000803e3d6000fd5b505050506040513d602081101561222157600080fd5b810190808051906020019092919050505061223d604f54611349565b612248606254611349565b612253606354611349565b61225e606454611349565b614381565b5b8291505b6122cd612292612279605f54611349565b612284605e54611349565b611be090919063ffffffff16565b6122bf846122b160016122a3611339565b611bfc90919063ffffffff16565b611bfc90919063ffffffff16565b61460090919063ffffffff16565b905060008111156123c9576122e061436f565b73ffffffffffffffffffffffffffffffffffffffff16637478fbe385836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b15801561238157600080fd5b505af1158015612395573d6000803e3d6000fd5b505050506040513d60408110156123ab57600080fd5b81019080805190602001909291908051906020019092919050505050505b6123d16114df565b73ffffffffffffffffffffffffffffffffffffffff166312d9b9398561240860016123fa611339565b611bfc90919063ffffffff16565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561248d57600080fd5b505af11580156124a1573d6000803e3d6000fd5b505050505b50505050565b60006124b6614638565b15156124c157600080fd5b6124cc603954611349565b6125846124d761268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561253a57600080fd5b505af115801561254e573d6000803e3d6000fd5b505050506040513d602081101561256457600080fd5b810190808051906020019092919050505084611bfc90919063ffffffff16565b81151561258d57fe5b069050919050565b6000603360019054906101000a900460ff1660ff166125b26146e8565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561264c57600080fd5b505af1158015612660573d6000803e3d6000fd5b505050506040513d602081101561267657600080fd5b810190808051906020019092919050505014905090565b600061269a602754610ce4565b905090565b6126a76147fd565b6126af6114df565b73ffffffffffffffffffffffffffffffffffffffff166362961de9836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561271d57600080fd5b505af1158015612731573d6000803e3d6000fd5b505050506040513d608081101561274757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508460000185602001866040018760600184815250848152508481525084815250505050506127a26114df565b73ffffffffffffffffffffffffffffffffffffffff1663a301c0d2836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561281057600080fd5b505af1158015612824573d6000803e3d6000fd5b505050506040513d608081101561283a57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050846080018560a0018660c0018760e00184815250848152508481525084815250505050506128956114df565b73ffffffffffffffffffffffffffffffffffffffff1663cf542aa9836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b15801561290357600080fd5b505af1158015612917573d6000803e3d6000fd5b505050506040513d606081101561292d57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050836101000184610120018561014001838152508381525083815250505050919050565b6000612982602f54610ce4565b905090565b6000816129965760115461299a565b6012545b83604051602001808360001916600019168152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156129fe57805182526020820191506020810190506020830392506129d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905092915050565b6000806000841415612a4757839150613bf9565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff161415612ce25784612bbf57612aae6146fa565b73ffffffffffffffffffffffffffffffffffffffff1663f4f9fadc8560016040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050600060405180830381600087803b158015612b2957600080fd5b505af1158015612b3d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612b6757600080fd5b810190808051640100000000811115612b7f57600080fd5b82810190506020810184811115612b9557600080fd5b8151856020820283011164010000000082111715612bb257600080fd5b5050929190505050612cd4565b612bc76146fa565b73ffffffffffffffffffffffffffffffffffffffff166385f0e4bf8560016040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050600060405180830381600087803b158015612c4257600080fd5b505af1158015612c56573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612c8057600080fd5b810190808051640100000000811115612c9857600080fd5b82810190506020810184811115612cae57600080fd5b8151856020820283011164010000000082111715612ccb57600080fd5b50509291905050505b866101000181905250612fb8565b84612e3857612cef6146fa565b73ffffffffffffffffffffffffffffffffffffffff166396fe8e6584606001518660016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001821515151581526020019350505050600060405180830381600087803b158015612da257600080fd5b505af1158015612db6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612de057600080fd5b810190808051640100000000811115612df857600080fd5b82810190506020810184811115612e0e57600080fd5b8151856020820283011164010000000082111715612e2b57600080fd5b5050929190505050612f85565b612e406146fa565b73ffffffffffffffffffffffffffffffffffffffff166340c7174e84606001518660016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001821515151581526020019350505050600060405180830381600087803b158015612ef357600080fd5b505af1158015612f07573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612f3157600080fd5b810190808051640100000000811115612f4957600080fd5b82810190506020810184811115612f5f57600080fd5b8151856020820283011164010000000082111715612f7c57600080fd5b50509291905050505b8661010001819052506000866101000151511415612fb757600186610120019015159081151581525050839150613bf9565b5b85610100015160018761010001515103815181101515612fd457fe5b9060200190602002015190508561010001515186608001818152505060008660a00181815250505b85608001518660a0015110156138f0578561010001518660a0015181518110151561302357fe5b906020019060200201518660e0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505085600001516130716114df565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff8860e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561310f57600080fd5b505af1158015613123573d6000803e3d6000fd5b505050506040513d602081101561313957600080fd5b8101908080519060200190929190505050141515613156576138db565b841561351d5761350f613167611c2b565b73ffffffffffffffffffffffffffffffffffffffff166370ae8f5c8860c00151608001518960c0015160a001518a60c0015160c001516131a561436f565b73ffffffffffffffffffffffffffffffffffffffff1663a5a9f5bb8d60e001518e600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561324f57600080fd5b505af1158015613263573d6000803e3d6000fd5b505050506040513d602081101561327957600080fd5b810190808051906020019092919050505061329261436f565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e28e60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561333057600080fd5b505af1158015613344573d6000803e3d6000fd5b505050506040513d602081101561335a57600080fd5b81019080805190602001909291905050506133736145ee565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a278f60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561341157600080fd5b505af1158015613425573d6000803e3d6000fd5b505050506040513d602081101561343b57600080fd5b81019080805190602001909291905050506040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808781526020018681526020018581526020018481526020018381526020018281526020019650505050505050602060405180830381600087803b1580156134c157600080fd5b505af11580156134d5573d6000803e3d6000fd5b505050506040513d60208110156134eb57600080fd5b81019080805190602001909291905050508760400151611be090919063ffffffff16565b8660400181815250506138da565b6138d0613528611c2b565b73ffffffffffffffffffffffffffffffffffffffff166370ae8f5c8860c00151600001518960c00151602001518a60c001516040015161356661436f565b73ffffffffffffffffffffffffffffffffffffffff166393383c518d60e001518e600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561361057600080fd5b505af1158015613624573d6000803e3d6000fd5b505050506040513d602081101561363a57600080fd5b810190808051906020019092919050505061365361436f565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e28e60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156136f157600080fd5b505af1158015613705573d6000803e3d6000fd5b505050506040513d602081101561371b57600080fd5b81019080805190602001909291905050506137346145ee565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a278f60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156137d257600080fd5b505af11580156137e6573d6000803e3d6000fd5b505050506040513d60208110156137fc57600080fd5b81019080805190602001909291905050506040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808781526020018681526020018581526020018481526020018381526020018281526020019650505050505050602060405180830381600087803b15801561388257600080fd5b505af1158015613896573d6000803e3d6000fd5b505050506040513d60208110156138ac57600080fd5b81019080805190602001909291905050508760200151611be090919063ffffffff16565b8660200181815250505b5b8560a001805180919060010181525050612ffc565b6138f86145ee565b73ffffffffffffffffffffffffffffffffffffffff1663bbb03dc26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561395b57600080fd5b505af115801561396f573d6000803e3d6000fd5b505050506040513d602081101561398557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156139cd5750845b156139e5576001866101400190151590811515815250505b6139ed6145ee565b73ffffffffffffffffffffffffffffffffffffffff166382624a2e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613a5057600080fd5b505af1158015613a64573d6000803e3d6000fd5b505050506040513d6020811015613a7a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015613ac3575084155b15613adb576001866101200190151590811515815250505b613ae3612975565b73ffffffffffffffffffffffffffffffffffffffff16636e3f777c613b0c886000015188612987565b836000808a613b1f578b60200151613b25565b8b604001515b6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018086600019166000191681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200195505050505050600060405180830381600087803b158015613bc757600080fd5b505af1158015613bdb573d6000803e3d6000fd5b50505050613bf6866080015185611bfc90919063ffffffff16565b91505b50949350505050565b613dcc8160c001516101400151613dbe613c1a6114df565b73ffffffffffffffffffffffffffffffffffffffff1663f03222f06040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613c7d57600080fd5b505af1158015613c91573d6000803e3d6000fd5b505050506040513d6020811015613ca757600080fd5b8101908080519060200190929190505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613d7557600080fd5b505af1158015613d89573d6000803e3d6000fd5b505050506040513d6020811015613d9f57600080fd5b8101908080519060200190929190505050611be090919063ffffffff16565b611bfc90919063ffffffff16565b816060018181525050613ddd6145ee565b73ffffffffffffffffffffffffffffffffffffffff16631538e68c60006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613e4c57600080fd5b505af1158015613e60573d6000803e3d6000fd5b50505050613e6c6145ee565b73ffffffffffffffffffffffffffffffffffffffff166391baa14460006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613edb57600080fd5b505af1158015613eef573d6000803e3d6000fd5b50505050613efb6114df565b73ffffffffffffffffffffffffffffffffffffffff1663521fcb66613f2e60018460000151611be090919063ffffffff16565b613f39604c54611349565b613f44604d54611349565b613f4f604e54611349565b8660200151613f5f604f54611349565b613f6a605054611349565b613f75605154611349565b8a60400151428c60600151613fa08e606001518f60c001516101400151611be090919063ffffffff16565b6040518d63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c50505050505050505050505050600060405180830381600087803b15801561403f57600080fd5b505af1158015614053573d6000803e3d6000fd5b5050505050565b6000614064614638565b151561406f57600080fd5b6141566001614148614082603954611349565b61413a61408d61268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156140f057600080fd5b505af1158015614104573d6000803e3d6000fd5b505050506040513d602081101561411a57600080fd5b810190808051906020019092919050505087611bfc90919063ffffffff16565b611c1590919063ffffffff16565b611be090919063ffffffff16565b9050919050565b600061416a602b54610ce4565b905090565b6141776147c6565b61417f6114df565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561421957600080fd5b505af115801561422d573d6000803e3d6000fd5b505050506040513d602081101561424357600080fd5b81019080805190602001909291905050508160000181815250506142656114df565b73ffffffffffffffffffffffffffffffffffffffff166327ddd3ae836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156142ff57600080fd5b505af1158015614313573d6000803e3d6000fd5b505050506040513d602081101561432957600080fd5b8101908080519060200190929190505050816020018181525050614350816000015161269f565b8160800181905250919050565b600061436a601c54610ce4565b905090565b600061437c602954610ce4565b905090565b600080858710156144ba576143c3866143b5876143a78b8b611bfc90919063ffffffff16565b61460090919063ffffffff16565b611c1590919063ffffffff16565b91506143cd61436f565b73ffffffffffffffffffffffffffffffffffffffff16637478fbe389846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b15801561446e57600080fd5b505af1158015614482573d6000803e3d6000fd5b505050506040513d604081101561449857600080fd5b81019080805190602001909291908051906020019092919050505050506145e4565b6144f1836144e3866144d58a8c611bfc90919063ffffffff16565b61460090919063ffffffff16565b611c1590919063ffffffff16565b90506144fb61436f565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d6889836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b15801561459c57600080fd5b505af11580156145b0573d6000803e3d6000fd5b505050506040513d60408110156145c657600080fd5b81019080805190602001909291908051906020019092919050505050505b5050505050505050565b60006145fb602c54610ce4565b905090565b6000808314156146135760009050614632565b818302905081838281151561462457fe5b0414151561462e57fe5b8090505b92915050565b60008061464361268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156146a657600080fd5b505af11580156146ba573d6000803e3d6000fd5b505050506040513d60208110156146d057600080fd5b81019080805190602001909291905050501415905090565b60006146f5602854610ce4565b905090565b6000614707602354610ce4565b905090565b6102a06040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200161474b614858565b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016000151581526020016000151581525090565b608060405190810160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6101e060405190810160405280600081526020016000815260200160008152602001600081526020016147f7614858565b81525090565b6101606040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61016060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a723058206acced1f03e2432ecde342b5c5cdaa560a67ec91cf00b13ceb516c092474774e0029",
  "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec146100e05780630d12144b14610137578063372500ab1461018e5780633943380c146101a55780633f5a7583146101d85780633f83acff1461021b57806349da49bc1461028c578063560a25ea146102cf57806368533060146102fa5780637bf4a98d146103295780637d6fed801461036e5780637f6a26b61461039d578063b1e2b9dd146103c8578063d70d93581461040d578063db4ecbc11461043c575b600080fd5b3480156100ec57600080fd5b506100f5610493565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014357600080fd5b5061014c6104b8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019a57600080fd5b506101a36104de565b005b3480156101b157600080fd5b506101ba610ac7565b60405180826000191660001916815260200191505060405180910390f35b3480156101e457600080fd5b50610219600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610acd565b005b34801561022757600080fd5b5061024a6004803603810190808035600019169060200190929190505050610ce4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029857600080fd5b506102cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc0565b005b3480156102db57600080fd5b506102e4610ded565b6040518082815260200191505060405180910390f35b34801561030657600080fd5b5061030f610dfd565b604051808215151515815260200191505060405180910390f35b34801561033557600080fd5b5061035460048036038101908080359060200190929190505050610e29565b604051808215151515815260200191505060405180910390f35b34801561037a57600080fd5b5061038361131e565b604051808215151515815260200191505060405180910390f35b3480156103a957600080fd5b506103b2611339565b6040518082815260200191505060405180910390f35b3480156103d457600080fd5b506103f76004803603810190808035600019169060200190929190505050611349565b6040518082815260200191505060405180910390f35b34801561041957600080fd5b5061042261140b565b604051808215151515815260200191505060405180910390f35b34801561044857600080fd5b506104516114b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006104eb611339565b60018111156105b45760006104fe6114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050506040513d602081101561059657600080fd5b81019080805190602001909291905050501115156105b357600080fd5b5b6105bc61140b565b15156105c757600080fd5b3393506105d3846114f1565b9050809350506107a0620151806107926105eb6114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d66106f660016106136114df565b73ffffffffffffffffffffffffffffffffffffffff166327ddd3ae8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156106ad57600080fd5b505af11580156106c1573d6000803e3d6000fd5b505050506040513d60208110156106d757600080fd5b8101908080519060200190929190505050611be090919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b505050506040513d602081101561077257600080fd5b810190808051906020019092919050505042611bfc90919063ffffffff16565b611c1590919063ffffffff16565b91506107aa6114df565b73ffffffffffffffffffffffffffffffffffffffff1663d715d6f5846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561081857600080fd5b505af115801561082c573d6000803e3d6000fd5b505050506108fb61083b611c2b565b73ffffffffffffffffffffffffffffffffffffffff1663120c52ef85856040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b505050506040513d60208110156108db57600080fd5b810190808051906020019092919050505084611bfc90919063ffffffff16565b92506109056114df565b73ffffffffffffffffffffffffffffffffffffffff16636a8cfd098560006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b505050506040513d6020811015610aaf57600080fd5b81019080805190602001909291905050505050505050565b60015481565b6000610ada601454611c3d565b1515610ae557600080fd5b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050506040513d6020811015610bcc57600080fd5b81019080805190602001909291905050509050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050506040513d6020811015610cce57600080fd5b8101908080519060200190929190505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b505050506040513d6020811015610da857600080fd5b81019080805190602001909291905050509050919050565b610dcb601654611c3d565b1515610dd657600080fd5b610ddf816114f1565b5050610dea81611d47565b50565b6000610df8426124ac565b905090565b6000610e0761140b565b8015610e245750610e19603854611349565b610e21610ded565b10155b905090565b6000610e3361470c565b610e3b614787565b6000610e45612595565b1515610e5057600080fd5b610e5861140b565b1515610e6357600080fd5b6000610e6d61268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ed057600080fd5b505af1158015610ee4573d6000803e3d6000fd5b505050506040513d6020811015610efa57600080fd5b810190808051906020019092919050505014151515610f1857600080fd5b610f2061131e565b1515610f2b57600080fd5b6000610f356114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d6610f58611339565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d6020811015610fd457600080fd5b8101908080519060200190929190505050141515610ff157600080fd5b61100c6001610ffe611339565b611bfc90919063ffffffff16565b8360000181815250506000836000015111151561102857600080fd5b611035836000015161269f565b8360c00181905250611045612975565b73ffffffffffffffffffffffffffffffffffffffff166312d0c13b61106f85600001516000612987565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050608060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b505050506040513d60808110156110f357600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505090915090508360600185602001828152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050506111728360008785612a33565b905082610120015115156111895760009350611316565b611191612975565b73ffffffffffffffffffffffffffffffffffffffff166312d0c13b6111bb85600001516001612987565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050608060405180830381600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b505050506040513d608081101561123f57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505090915090508360600185604001828152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050506112be8360018385612a33565b5082610140015115156112d45760009350611316565b6112dd83613c02565b600193506112e9611339565b7ffc76425595a72efa6bd6c8f55ce8a0e01f5a789fc399e5d779ae1942f3875e5c60405160405180910390a25b505050919050565b600061132b603854611349565b611333610ded565b10905090565b60006113444261405a565b905090565b600061135361415d565b73ffffffffffffffffffffffffffffffffffffffff1663734c1168836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156113c957600080fd5b505af11580156113dd573d6000803e3d6000fd5b505050506040513d60208110156113f357600080fd5b81019080805190602001909291905050509050919050565b600061141561268d565b73ffffffffffffffffffffffffffffffffffffffff16638bc865fd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050506040513d60208110156114a257600080fd5b810190808051906020019092919050505015905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114ec602d54610ce4565b905090565b6000806114fc6147c6565b60008060008061150b8861416f565b94506115156114df565b73ffffffffffffffffffffffffffffffffffffffff166378af89ac896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b505050506040513d60208110156115d957600080fd5b8101908080519060200190929190505050955084600001516115f9611339565b148061160d57508460200151856000015111155b1561161e5760008696509650611bd6565b6117d4620151806117c66116306114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d661166360018b60200151611be090919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156116b557600080fd5b505af11580156116c9573d6000803e3d6000fd5b505050506040513d60208110156116df57600080fd5b81019080805190602001909291905050506116f86114df565b73ffffffffffffffffffffffffffffffffffffffff1663a78e00d661172b60018c60000151611be090919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d60208110156117a757600080fd5b8101908080519060200190929190505050611bfc90919063ffffffff16565b611c1590919063ffffffff16565b93506117de611c2b565b73ffffffffffffffffffffffffffffffffffffffff1663120c52ef87866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b15801561185457600080fd5b505af1158015611868573d6000803e3d6000fd5b505050506040513d602081101561187e57600080fd5b810190808051906020019092919050505092506118a48387611bfc90919063ffffffff16565b95506118ae6114df565b73ffffffffffffffffffffffffffffffffffffffff1663d715d6f5846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561191c57600080fd5b505af1158015611930573d6000803e3d6000fd5b5050505061193c61435d565b73ffffffffffffffffffffffffffffffffffffffff1663fd56ff83896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b1580156119d557600080fd5b505af11580156119e9573d6000803e3d6000fd5b505050506040513d60408110156119ff57600080fd5b8101908080519060200190929190805190602001909291905050508092508193505050611a4781611a398489611be090919063ffffffff16565b611be090919063ffffffff16565b9550611a516114df565b73ffffffffffffffffffffffffffffffffffffffff16636a8cfd0989886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611af357600080fd5b505af1158015611b07573d6000803e3d6000fd5b50505050611b136114df565b73ffffffffffffffffffffffffffffffffffffffff1663d8048c9d8987600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b50505050600196505b5050505050915091565b60008183019050828110151515611bf357fe5b80905092915050565b6000828211151515611c0a57fe5b818303905092915050565b60008183811515611c2257fe5b04905092915050565b6000611c38602454610ce4565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611cd757600080fd5b505af1158015611ceb573d6000803e3d6000fd5b505050506040513d6020811015611d0157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806000611d546114df565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611dee57600080fd5b505af1158015611e02573d6000803e3d6000fd5b505050506040513d6020811015611e1857600080fd5b81019080805190602001909291905050509250611e336114df565b73ffffffffffffffffffffffffffffffffffffffff1663bd695d21856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ecd57600080fd5b505af1158015611ee1573d6000803e3d6000fd5b505050506040513d6020811015611ef757600080fd5b81019080805190602001909291905050509150611f12611339565b611f26600184611be090919063ffffffff16565b101515611f32576124a6565b82611f47600184611be090919063ffffffff16565b14156122685761206784611f5961436f565b73ffffffffffffffffffffffffffffffffffffffff166393383c5187876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b505050506040513d602081101561202557600080fd5b8101908080519060200190929190505050612041604c54611349565b61204c605e54611349565b612057606054611349565b612062606154611349565b614381565b61206f6145ee565b73ffffffffffffffffffffffffffffffffffffffff166388954a6c856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050506040513d602081101561213357600080fd5b810190808051906020019092919050505015612264576122638461215561436f565b73ffffffffffffffffffffffffffffffffffffffff1663a5a9f5bb87876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156121f757600080fd5b505af115801561220b573d6000803e3d6000fd5b505050506040513d602081101561222157600080fd5b810190808051906020019092919050505061223d604f54611349565b612248606254611349565b612253606354611349565b61225e606454611349565b614381565b5b8291505b6122cd612292612279605f54611349565b612284605e54611349565b611be090919063ffffffff16565b6122bf846122b160016122a3611339565b611bfc90919063ffffffff16565b611bfc90919063ffffffff16565b61460090919063ffffffff16565b905060008111156123c9576122e061436f565b73ffffffffffffffffffffffffffffffffffffffff16637478fbe385836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b15801561238157600080fd5b505af1158015612395573d6000803e3d6000fd5b505050506040513d60408110156123ab57600080fd5b81019080805190602001909291908051906020019092919050505050505b6123d16114df565b73ffffffffffffffffffffffffffffffffffffffff166312d9b9398561240860016123fa611339565b611bfc90919063ffffffff16565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561248d57600080fd5b505af11580156124a1573d6000803e3d6000fd5b505050505b50505050565b60006124b6614638565b15156124c157600080fd5b6124cc603954611349565b6125846124d761268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561253a57600080fd5b505af115801561254e573d6000803e3d6000fd5b505050506040513d602081101561256457600080fd5b810190808051906020019092919050505084611bfc90919063ffffffff16565b81151561258d57fe5b069050919050565b6000603360019054906101000a900460ff1660ff166125b26146e8565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561264c57600080fd5b505af1158015612660573d6000803e3d6000fd5b505050506040513d602081101561267657600080fd5b810190808051906020019092919050505014905090565b600061269a602754610ce4565b905090565b6126a76147fd565b6126af6114df565b73ffffffffffffffffffffffffffffffffffffffff166362961de9836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561271d57600080fd5b505af1158015612731573d6000803e3d6000fd5b505050506040513d608081101561274757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508460000185602001866040018760600184815250848152508481525084815250505050506127a26114df565b73ffffffffffffffffffffffffffffffffffffffff1663a301c0d2836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561281057600080fd5b505af1158015612824573d6000803e3d6000fd5b505050506040513d608081101561283a57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050846080018560a0018660c0018760e00184815250848152508481525084815250505050506128956114df565b73ffffffffffffffffffffffffffffffffffffffff1663cf542aa9836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b15801561290357600080fd5b505af1158015612917573d6000803e3d6000fd5b505050506040513d606081101561292d57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050836101000184610120018561014001838152508381525083815250505050919050565b6000612982602f54610ce4565b905090565b6000816129965760115461299a565b6012545b83604051602001808360001916600019168152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156129fe57805182526020820191506020810190506020830392506129d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905092915050565b6000806000841415612a4757839150613bf9565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff161415612ce25784612bbf57612aae6146fa565b73ffffffffffffffffffffffffffffffffffffffff1663f4f9fadc8560016040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050600060405180830381600087803b158015612b2957600080fd5b505af1158015612b3d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612b6757600080fd5b810190808051640100000000811115612b7f57600080fd5b82810190506020810184811115612b9557600080fd5b8151856020820283011164010000000082111715612bb257600080fd5b5050929190505050612cd4565b612bc76146fa565b73ffffffffffffffffffffffffffffffffffffffff166385f0e4bf8560016040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050600060405180830381600087803b158015612c4257600080fd5b505af1158015612c56573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612c8057600080fd5b810190808051640100000000811115612c9857600080fd5b82810190506020810184811115612cae57600080fd5b8151856020820283011164010000000082111715612ccb57600080fd5b50509291905050505b866101000181905250612fb8565b84612e3857612cef6146fa565b73ffffffffffffffffffffffffffffffffffffffff166396fe8e6584606001518660016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001821515151581526020019350505050600060405180830381600087803b158015612da257600080fd5b505af1158015612db6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612de057600080fd5b810190808051640100000000811115612df857600080fd5b82810190506020810184811115612e0e57600080fd5b8151856020820283011164010000000082111715612e2b57600080fd5b5050929190505050612f85565b612e406146fa565b73ffffffffffffffffffffffffffffffffffffffff166340c7174e84606001518660016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001821515151581526020019350505050600060405180830381600087803b158015612ef357600080fd5b505af1158015612f07573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612f3157600080fd5b810190808051640100000000811115612f4957600080fd5b82810190506020810184811115612f5f57600080fd5b8151856020820283011164010000000082111715612f7c57600080fd5b50509291905050505b8661010001819052506000866101000151511415612fb757600186610120019015159081151581525050839150613bf9565b5b85610100015160018761010001515103815181101515612fd457fe5b9060200190602002015190508561010001515186608001818152505060008660a00181815250505b85608001518660a0015110156138f0578561010001518660a0015181518110151561302357fe5b906020019060200201518660e0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505085600001516130716114df565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff8860e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561310f57600080fd5b505af1158015613123573d6000803e3d6000fd5b505050506040513d602081101561313957600080fd5b8101908080519060200190929190505050141515613156576138db565b841561351d5761350f613167611c2b565b73ffffffffffffffffffffffffffffffffffffffff166370ae8f5c8860c00151608001518960c0015160a001518a60c0015160c001516131a561436f565b73ffffffffffffffffffffffffffffffffffffffff1663a5a9f5bb8d60e001518e600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561324f57600080fd5b505af1158015613263573d6000803e3d6000fd5b505050506040513d602081101561327957600080fd5b810190808051906020019092919050505061329261436f565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e28e60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561333057600080fd5b505af1158015613344573d6000803e3d6000fd5b505050506040513d602081101561335a57600080fd5b81019080805190602001909291905050506133736145ee565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a278f60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561341157600080fd5b505af1158015613425573d6000803e3d6000fd5b505050506040513d602081101561343b57600080fd5b81019080805190602001909291905050506040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808781526020018681526020018581526020018481526020018381526020018281526020019650505050505050602060405180830381600087803b1580156134c157600080fd5b505af11580156134d5573d6000803e3d6000fd5b505050506040513d60208110156134eb57600080fd5b81019080805190602001909291905050508760400151611be090919063ffffffff16565b8660400181815250506138da565b6138d0613528611c2b565b73ffffffffffffffffffffffffffffffffffffffff166370ae8f5c8860c00151600001518960c00151602001518a60c001516040015161356661436f565b73ffffffffffffffffffffffffffffffffffffffff166393383c518d60e001518e600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561361057600080fd5b505af1158015613624573d6000803e3d6000fd5b505050506040513d602081101561363a57600080fd5b810190808051906020019092919050505061365361436f565b73ffffffffffffffffffffffffffffffffffffffff16639c89a0e28e60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156136f157600080fd5b505af1158015613705573d6000803e3d6000fd5b505050506040513d602081101561371b57600080fd5b81019080805190602001909291905050506137346145ee565b73ffffffffffffffffffffffffffffffffffffffff1663cd094a278f60e001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156137d257600080fd5b505af11580156137e6573d6000803e3d6000fd5b505050506040513d60208110156137fc57600080fd5b81019080805190602001909291905050506040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808781526020018681526020018581526020018481526020018381526020018281526020019650505050505050602060405180830381600087803b15801561388257600080fd5b505af1158015613896573d6000803e3d6000fd5b505050506040513d60208110156138ac57600080fd5b81019080805190602001909291905050508760200151611be090919063ffffffff16565b8660200181815250505b5b8560a001805180919060010181525050612ffc565b6138f86145ee565b73ffffffffffffffffffffffffffffffffffffffff1663bbb03dc26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561395b57600080fd5b505af115801561396f573d6000803e3d6000fd5b505050506040513d602081101561398557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156139cd5750845b156139e5576001866101400190151590811515815250505b6139ed6145ee565b73ffffffffffffffffffffffffffffffffffffffff166382624a2e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613a5057600080fd5b505af1158015613a64573d6000803e3d6000fd5b505050506040513d6020811015613a7a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015613ac3575084155b15613adb576001866101200190151590811515815250505b613ae3612975565b73ffffffffffffffffffffffffffffffffffffffff16636e3f777c613b0c886000015188612987565b836000808a613b1f578b60200151613b25565b8b604001515b6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018086600019166000191681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200195505050505050600060405180830381600087803b158015613bc757600080fd5b505af1158015613bdb573d6000803e3d6000fd5b50505050613bf6866080015185611bfc90919063ffffffff16565b91505b50949350505050565b613dcc8160c001516101400151613dbe613c1a6114df565b73ffffffffffffffffffffffffffffffffffffffff1663f03222f06040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613c7d57600080fd5b505af1158015613c91573d6000803e3d6000fd5b505050506040513d6020811015613ca757600080fd5b8101908080519060200190929190505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613d7557600080fd5b505af1158015613d89573d6000803e3d6000fd5b505050506040513d6020811015613d9f57600080fd5b8101908080519060200190929190505050611be090919063ffffffff16565b611bfc90919063ffffffff16565b816060018181525050613ddd6145ee565b73ffffffffffffffffffffffffffffffffffffffff16631538e68c60006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613e4c57600080fd5b505af1158015613e60573d6000803e3d6000fd5b50505050613e6c6145ee565b73ffffffffffffffffffffffffffffffffffffffff166391baa14460006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015613edb57600080fd5b505af1158015613eef573d6000803e3d6000fd5b50505050613efb6114df565b73ffffffffffffffffffffffffffffffffffffffff1663521fcb66613f2e60018460000151611be090919063ffffffff16565b613f39604c54611349565b613f44604d54611349565b613f4f604e54611349565b8660200151613f5f604f54611349565b613f6a605054611349565b613f75605154611349565b8a60400151428c60600151613fa08e606001518f60c001516101400151611be090919063ffffffff16565b6040518d63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c50505050505050505050505050600060405180830381600087803b15801561403f57600080fd5b505af1158015614053573d6000803e3d6000fd5b5050505050565b6000614064614638565b151561406f57600080fd5b6141566001614148614082603954611349565b61413a61408d61268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156140f057600080fd5b505af1158015614104573d6000803e3d6000fd5b505050506040513d602081101561411a57600080fd5b810190808051906020019092919050505087611bfc90919063ffffffff16565b611c1590919063ffffffff16565b611be090919063ffffffff16565b9050919050565b600061416a602b54610ce4565b905090565b6141776147c6565b61417f6114df565b73ffffffffffffffffffffffffffffffffffffffff1663cefc2bff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561421957600080fd5b505af115801561422d573d6000803e3d6000fd5b505050506040513d602081101561424357600080fd5b81019080805190602001909291905050508160000181815250506142656114df565b73ffffffffffffffffffffffffffffffffffffffff166327ddd3ae836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156142ff57600080fd5b505af1158015614313573d6000803e3d6000fd5b505050506040513d602081101561432957600080fd5b8101908080519060200190929190505050816020018181525050614350816000015161269f565b8160800181905250919050565b600061436a601c54610ce4565b905090565b600061437c602954610ce4565b905090565b600080858710156144ba576143c3866143b5876143a78b8b611bfc90919063ffffffff16565b61460090919063ffffffff16565b611c1590919063ffffffff16565b91506143cd61436f565b73ffffffffffffffffffffffffffffffffffffffff16637478fbe389846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b15801561446e57600080fd5b505af1158015614482573d6000803e3d6000fd5b505050506040513d604081101561449857600080fd5b81019080805190602001909291908051906020019092919050505050506145e4565b6144f1836144e3866144d58a8c611bfc90919063ffffffff16565b61460090919063ffffffff16565b611c1590919063ffffffff16565b90506144fb61436f565b73ffffffffffffffffffffffffffffffffffffffff1663ded86d6889836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b15801561459c57600080fd5b505af11580156145b0573d6000803e3d6000fd5b505050506040513d60408110156145c657600080fd5b81019080805190602001909291908051906020019092919050505050505b5050505050505050565b60006145fb602c54610ce4565b905090565b6000808314156146135760009050614632565b818302905081838281151561462457fe5b0414151561462e57fe5b8090505b92915050565b60008061464361268d565b73ffffffffffffffffffffffffffffffffffffffff1663d9c6bb206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156146a657600080fd5b505af11580156146ba573d6000803e3d6000fd5b505050506040513d60208110156146d057600080fd5b81019080805190602001909291905050501415905090565b60006146f5602854610ce4565b905090565b6000614707602354610ce4565b905090565b6102a06040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200161474b614858565b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016000151581526020016000151581525090565b608060405190810160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6101e060405190810160405280600081526020016000815260200160008152602001600081526020016147f7614858565b81525090565b6101606040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61016060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a723058206acced1f03e2432ecde342b5c5cdaa560a67ec91cf00b13ceb516c092474774e0029",
  "sourceMap": "390:24052:12:-;;;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;;;;;;;;1533:1428:12;8:9:-1;5:2;;;30:1;27;20:12;5:2;1533:1428:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:45;1627:28;;1657:9;1622:4;;;:45;;;:::i;:::-;1614:54;;;;;;;;1698:11;1678:17;;:31;;;;;;;;;;;;;;;;;;1776:19;:17;;;:19;;;:::i;:::-;:37;;;1827:1;1842:43;1856:28;;1842:13;;;:43;;;:::i;:::-;1899:50;1913:35;;1899:13;;;:50;;;:::i;:::-;1963:53;1977:38;;1963:13;;;:53;;;:::i;:::-;2030:1;2133:53;2147:38;;2133:13;;;:53;;;:::i;:::-;2200:60;2214:45;;2200:13;;;:60;;;:::i;:::-;2274:63;2288:48;;2274:13;;;:63;;;:::i;:::-;2351:1;2789:3;2807:1;2904;1776:1178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1776:1178:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1776:1178:12;;;;1533:1428;;390:24052;;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;6881:199:2:-;6957:27;7030:42;7043:28;;7030:12;;;:42;;;:::i;:::-;7000:73;;6881:199;:::o;7327:189::-;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;2380:179:67:-;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;5464:198:2:-;5540:27;5613:41;5626:27;;5613:12;;;:41;;;:::i;:::-;5583:72;;5464:198;:::o;390:24052:12:-;;;;;;;",
  "deployedSourceMap": "390:24052:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:23:67;;;;;;;;;;;;;;;;;;;;;;;;;;;827:32:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:32:12;;;;;;;;;;;;;;;;;;;;;;;;;;;3869:1769;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3869:1769:12;;;;;;264:18:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:18:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:285:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3201:285:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:179:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:179:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5857:268:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5857:268:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;16324:2104:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16324:2104:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;7327:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7327:189:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;834:173;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23;;;;;;;;;;;;;:::o;827:32:12:-;;;;;;;;;;;;;:::o;3869:1769::-;4011:13;4047:21;4515;3935: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;3981:18:12;:16;:18::i;:::-;3973:27;;;;;;;;4027:10;4011:26;;4170:51;4215:5;4170:44;:51::i;:::-;4150:71;;;;;;4539:311;4843:6;4539:286;4577:19;:17;:19::i;:::-;:42;;;4641:66;4705:1;4641:19;:17;:19::i;:::-;:52;;;4694:5;4641:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:59:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4641:59:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4641:59:12;;;;;;;;;;;;;;;;:63;;:66;;;;:::i;:::-;4577:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4577:234:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4577:234:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4577:234:12;;;;;;;;;;;;;;;;4539:3;:20;;:286;;;;:::i;:::-;:303;;:311;;;;:::i;:::-;4515:335;;5081:19;:17;:19::i;:::-;:40;;;5122:13;5081:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5081:55:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5081:55:12;;;;5163:149;5194:22;:20;:22::i;:::-;:41;;;5253:13;5284;5194:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5194:117:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5194:117:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5194:117:12;;;;;;;;;;;;;;;;5163:13;:17;;:149;;;;:::i;:::-;5147:165;;5323:19;:17;:19::i;:::-;:38;;;5362:5;5369:1;5323:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5323:48:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5323:48:12;;;;5387:17;;;;;;;;;;;5381:33;;;5415:5;5422:13;5381:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5381:55:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5381:55:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5381:55:12;;;;;;;;;;;;;;;;;3869:1769;;;;:::o;264:18:67:-;;;;:::o;3201:285:12:-;3329:19;3295:23;3305:12;;3295:9;:23::i;:::-;3287:32;;;;;;;;3357:17;;;;;;;;;;;3351:34;;;3394:4;3351:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3351:49:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3351:49:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3351:49:12;;;;;;;;;;;;;;;;3329:71;;3416:17;;;;;;;;;;;3410:33;;;3444:21;3467:11;3410:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3410:69:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3410:69:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3410:69:12;;;;;;;;;;;;;;;;;3201:285;;:::o;2380:179:67:-;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;5857:268:12:-;5961:37;5971:26;;5961:9;:37::i;:::-;5953:46;;;;;;;;6010:51;6055:5;6010:44;:51::i;:::-;;;6071:47;6112:5;6071:40;:47::i;:::-;5857:268;:::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;16324:2104:12:-;16446:10;16821:30;;:::i;:::-;17065:50;;:::i;:::-;17385:23;412:12:7;:10;:12::i;:::-;404:21;;;;;;;;16480:18:12;:16;:18::i;:::-;16472:27;;;;;;;;16562:1;16517:19;:17;:19::i;:::-;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16517:41:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16517:41:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16517:41:12;;;;;;;;;;;;;;;;:46;;16509:55;;;;;;;;16635:16;:14;:16::i;:::-;16627:25;;;;;;;;16740:1;16670:19;:17;:19::i;:::-;:42;;;16713:22;:20;:22::i;:::-;16670:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16670:66:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16670:66:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16670:66:12;;;;;;;;;;;;;;;;:71;16662:80;;;;;;;;16884:29;16911:1;16884:22;:20;:22::i;:::-;:26;;:29;;;;:::i;:::-;16861:4;:20;;:52;;;;;16954:1;16931:4;:20;;;:24;16923:33;;;;;;;;17017:37;17033:4;:20;;;17017:15;:37::i;:::-;17004:4;:10;;:50;;;;17230:28;:26;:28::i;:::-;:51;;;17295:69;17336:4;:20;;;17358:5;17295:40;:69::i;:::-;17230:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17230:144:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17230:144:12;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17230:144:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17125:249;;;;;17139:12;:25;;17180:4;:37;;17125:249;;;;;;;;;;;;;;17411:59;17431:4;17437:5;17444:11;17457:12;17411:19;:59::i;:::-;17385:85;;17670:4;:36;;;17669:37;17665:60;;;17717:5;17710:12;;;;17665:60;17845:28;:26;:28::i;:::-;:51;;;17910:68;17951:4;:20;;;17973:4;17910:40;:68::i;:::-;17845:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17845:143:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17845:143:12;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17845:143:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17735:253;;;;;17749:12;:25;;17790:4;:42;;17735:253;;;;;;;;;;;;;;17999:62;18019:4;18025;18031:15;18048:12;17999:19;:62::i;:::-;;18164:4;:45;;;18163:46;18159:69;;;18220:5;18213:12;;;;18159:69;18312:32;18339:4;18312:26;:32::i;:::-;18362:4;18354:12;;18398:22;:20;:22::i;:::-;18382:39;;;;;;;;;;435:1:7;16324:2104:12;;;;;;:::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;7327:189::-;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;834:173::-;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;6881:199:2:-;6957:27;7030:42;7043:28;;7030:12;:42::i;:::-;7000:73;;6881:199;:::o;11414:3956:12:-;11517:11;11530:25;11571:23;;:::i;:::-;13041:21;13286:22;14582:32;14624:30;11597:27;11618:5;11597:20;:27::i;:::-;11571:53;;11654:19;:17;:19::i;:::-;:33;;;11688:5;11654:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11654:40:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11654:40:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11654:40:12;;;;;;;;;;;;;;;;11634:60;;12368:4;:28;;;12342:22;:20;:22::i;:::-;:54;12341:143;;;;12446:4;:37;;;12414:4;:28;;;:69;;12341:143;12324:229;;;12517:5;12524:17;12509:33;;;;;;12324:229;13065:211;13269:6;13065:186;13162:19;:17;:19::i;:::-;:42;;;13205:44;13247:1;13205:4;:37;;;:41;;:44;;;;:::i;:::-;13162:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13162:88:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13162:88:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13162:88:12;;;;;;;;;;;;;;;;13065:19;:17;:19::i;:::-;:42;;;13108:35;13141:1;13108:4;:28;;;:32;;:35;;;;:::i;:::-;13065:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13065:79:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13065:79:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13065:79:12;;;;;;;;;;;;;;;;:96;;:186;;;;:::i;:::-;:203;;:211;;;;:::i;:::-;13041:235;;13311:22;:20;:22::i;:::-;:41;;;13366:17;13397:13;13311:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13311:109:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13311:109:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13311:109:12;;;;;;;;;;;;;;;;13286:134;;13450:37;13472:14;13450:17;:21;;:37;;;;:::i;:::-;13430:57;;14515:19;:17;:19::i;:::-;:40;;;14556:14;14515:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14515:56:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14515:56:12;;;;14717:25;:23;:25::i;:::-;:73;;;14791:5;14717:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14717:80:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14717:80:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14717:80:12;;;;;;;;;;;;;;;;;;;;;;;;;14664:133;;;;;;;;14827:75;14879:22;14827:47;14849:24;14827:17;:21;;:47;;;;:::i;:::-;:51;;:75;;;;:::i;:::-;14807:95;;15119:19;:17;:19::i;:::-;:38;;;15158:5;15165:17;15119:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15119:64:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15119:64:12;;;;15245:19;:17;:19::i;:::-;:58;;;15304:5;15311:4;:28;;;15245:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15245:95:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15245:95:12;;;;15359:4;15350:13;;11414:3956;;;;;;;;;:::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;1060:116::-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;665:283::-;725:7;941:2;936;:7;;;;;;;;929:14;;665:283;;;;:::o;866:211:12:-;945:30;1024:45;1037:31;;1024:12;:45::i;:::-;991:79;;866:211;:::o;610:160:67:-;671:12;732:8;;;;;;;;;;;715:39;;;755:9;715:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;715:50:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;715:50:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;715:50:67;;;;;;;;;;;;;;;;701:64;;:10;:64;;;691:74;;610:160;;;:::o;6920:3438:12:-;7016:32;7111:44;7230:28;7051:19;:17;:19::i;:::-;:43;;;7095:5;7051:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7051:50:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7051:50:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7051:50:12;;;;;;;;;;;;;;;;7016:85;;7158:19;:17;:19::i;:::-;:55;;;7214:5;7158:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7158:62:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7158:62:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7158:62:12;;;;;;;;;;;;;;;;7111:109;;7445:22;:20;:22::i;:::-;7398:43;7439:1;7398:36;:40;;:43;;;;:::i;:::-;:69;;7381:128;;;7492:7;;7381:128;7901:24;7854:43;7895:1;7854:36;:40;;:43;;;;:::i;:::-;:71;7836:1479;;;7951:399;7983:5;8006:18;:16;:18::i;:::-;:34;;;8041:5;8048:24;8006:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8006:67:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8006:67:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8006:67:12;;;;;;;;;;;;;;;;8091:43;8105:28;;8091:13;:43::i;:::-;8152:50;8166:35;;8152:13;:50::i;:::-;8220:49;8234:34;;8220:13;:49::i;:::-;8287;8301:34;;8287:13;:49::i;:::-;7951:14;:399::i;:::-;8674:17;:15;:17::i;:::-;:36;;;8711:5;8674:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8674:43:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8674:43:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8674:43:12;;;;;;;;;;;;;;;;8670:558;;;8737:476;8773:5;8800:18;:16;:18::i;:::-;:43;;;8844:5;8851:24;8800:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8800:76:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8800:76:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8800:76:12;;;;;;;;;;;;;;;;8898:53;8912:38;;8898:13;:53::i;:::-;8973:60;8987:45;;8973:13;:60::i;:::-;9055:59;9069:44;;9055:13;:59::i;:::-;9136;9150:44;;9136:13;:59::i;:::-;8737:14;:476::i;:::-;8670:558;9280:24;9241:63;;7836:1479;9894:243;10002:121;10074:48;10088:33;;10074:13;:48::i;:::-;10002:50;10016:35;;10002:13;:50::i;:::-;:71;;:121;;;;:::i;:::-;9895:71;9929:36;9895:29;9922:1;9895:22;:20;:22::i;:::-;:26;;:29;;;;:::i;:::-;:33;;:71;;;;:::i;:::-;9894:90;;:243;;;;:::i;:::-;9859:278;;10175:1;10152:20;:24;10148:94;;;10178:18;:16;:18::i;:::-;:35;;;10214:5;10221:20;10178:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10178:64:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10178:64:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10178:64:12;;;;;;;;;;;;;;;;;;;;;;;;;;;10148:94;10252:19;:17;:19::i;:::-;:61;;;10314:5;10321:29;10348:1;10321:22;:20;:22::i;:::-;:26;;:29;;;;:::i;:::-;10252:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10252:99:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10252:99:12;;;;6920:3438;;;;;:::o;3928:332:2:-;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;449:186:7:-;518:15;614:14;;;;;;;;;;;562:66;;:18;:16;:18::i;:::-;:36;;;599:10;562:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:48:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;562:48:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;562:48:7;;;;;;;;;;;;;;;;:66;549:79;;449:186;:::o;6270:199:2:-;6346:27;6419:42;6432:28;;6419:12;:42::i;:::-;6389:73;;6270:199;:::o;1728:939:4:-;1824:32;;:::i;:::-;2079:19;:17;:19::i;:::-;:46;;;2126:14;2079:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2079:62:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2079:62:4;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2079:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:6;:32;;1932:6;:32;;1978:6;:35;;2027:6;:39;;1872:269;;;;;;;;;;;;;;;;;;;;2390:19;:17;:19::i;:::-;:44;;;2435:14;2390:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:60:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2390:60:4;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2390:60:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2165:6;:41;;2220:6;:41;;2275:6;:44;;2333:6;:44;;2151:299;;;;;;;;;;;;;;;;;;;;2602:19;:17;:19::i;:::-;:42;;;2645:14;2602:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2602:58:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2602:58:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2602:58:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:6;:25;;2513:6;:32;;2559:6;:30;;2460:200;;;;;;;;;;;;;;;1728:939;;;:::o;7086:235:2:-;7171:36;7262:51;7275:37;;7262:12;:51::i;:::-;7223:91;;7086:235;:::o;18523:315:12:-;18640:11;18709:13;:83;;18765:27;;18709:83;;;18725:37;;18709:83;18806:14;18679:151;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18679:151:12;;;18669:162;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;18669:162:12;;;;;;;;;;;;;;;;18663:168;;18523:315;;;;:::o;20406:4034::-;20702:20;21835;20757:1;20742:11;:16;20738:40;;;20767:11;20760:18;;;;20738:40;20856:13;;;;;;;;;;;20826:43;;:13;:26;;;:43;;;20822:1003;;;21089:17;:163;;21197:19;:17;:19::i;:::-;:36;;;21234:11;21247:4;21197:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21197:55:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21197:55:12;;;;;;39:16:-1;36:1;17:17;2:54;21197:55:12;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21197:55:12;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;73:11;68:3;64:21;57:28;;126:4;121:3;117:14;163:9;145:16;142:31;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;21197:55:12;;;;;;21089:163;;;21125:19;:17;:19::i;:::-;:34;;;21160:11;21173:4;21125:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21125:53:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21125:53:12;;;;;;39:16:-1;36:1;17:17;2:54;21125:53:12;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21125:53:12;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;73:11;68:3;64:21;57:28;;126:4;121:3;117:14;163:9;145:16;142:31;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;21125:53:12;;;;;;21089:163;21076:4;:10;;:176;;;;20822:1003;;;21296:17;:227;;21436:19;:17;:19::i;:::-;:40;;;21477:13;:26;;;21505:11;21518:4;21436:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21436:87:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21436:87:12;;;;;;39:16:-1;36:1;17:17;2:54;21436:87:12;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21436:87:12;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;73:11;68:3;64:21;57:28;;126:4;121:3;117:14;163:9;145:16;142:31;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;21436:87:12;;;;;;21296:227;;;21332:19;:17;:19::i;:::-;:38;;;21371:13;:26;;;21399:11;21412:4;21332:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21332:85:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21332:85:12;;;;;;39:16:-1;36:1;17:17;2:54;21332:85:12;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21332:85:12;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;73:11;68:3;64:21;57:28;;126:4;121:3;117:14;163:9;145:16;142:31;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;21332:85:12;;;;;;21296:227;21283:4;:10;;:240;;;;21700:1;21679:4;:10;;;:17;:22;21675:140;;;21760:4;21721;:36;;:43;;;;;;;;;;;21789:11;21782:18;;;;21675:140;20822:1003;21880:4;:10;;;21911:1;21891:4;:10;;;:17;:21;21880:33;;;;;;;;;;;;;;;;;;21865:48;;21941:4;:10;;;:17;21924:4;:14;;:34;;;;;21980:1;21973:4;:6;;:8;;;;;21968:1635;21989:4;:14;;;21982:4;:6;;;:21;21968:1635;;;22047:4;:10;;;22058:4;:6;;;22047:18;;;;;;;;;;;;;;;;;;22028:4;:16;;:37;;;;;;;;;;;22236:4;:20;;;22171:19;:17;:19::i;:::-;:43;;;22215:4;:16;;;22171:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22171:61:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22171:61:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22171:61:12;;;;;;;;;;;;;;;;:85;;22167:132;;;22276:8;;22167:132;22316:17;22312:1281;;;22398:571;22445:22;:20;:22::i;:::-;:52;;;22519:4;:10;;;:45;;;22586:4;:10;;;:45;;;22653:4;:10;;;:48;;;22723:18;:16;:18::i;:::-;:43;;;22767:4;:16;;;22785:4;:20;;;22723:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22723:83:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22723:83:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22723:83:12;;;;;;;;;;;;;;;;22828:18;:16;:18::i;:::-;:32;;;22861:4;:16;;;22828:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22828:50:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22828:50:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22828:50:12;;;;;;;;;;;;;;;;22900:17;:15;:17::i;:::-;:32;;;22933:4;:16;;;22900:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22900:50:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22900:50:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22900:50:12;;;;;;;;;;;;;;;;22445:523;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22445:523:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22445:523:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22445:523:12;;;;;;;;;;;;;;;;22398:4;:42;;;:46;;:571;;;;:::i;:::-;22353:4;:42;;:616;;;;;22312:1281;;;23048:530;23090:22;:20;:22::i;:::-;:52;;;23164:4;:10;;;:36;;;23222:4;:10;;;:36;;;23280:4;:10;;;:39;;;23341:18;:16;:18::i;:::-;:34;;;23376:4;:16;;;23394:4;:20;;;23341:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23341:74:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23341:74:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23341:74:12;;;;;;;;;;;;;;;;23437:18;:16;:18::i;:::-;:32;;;23470:4;:16;;;23437:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23437:50:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23437:50:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23437:50:12;;;;;;;;;;;;;;;;23509:17;:15;:17::i;:::-;:32;;;23542:4;:16;;;23509:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23509:50:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23509:50:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23509:50:12;;;;;;;;;;;;;;;;23090:487;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23090:487:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23090:487:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23090:487:12;;;;;;;;;;;;;;;;23048:4;:37;;;:41;;:530;;;;:::i;:::-;23008:4;:37;;:570;;;;;22312:1281;21968:1635;22004:4;:6;;:8;;;;;;;;;;;21968:1635;;;23702:17;:15;:17::i;:::-;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23702:37:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23702:37:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23702:37:12;;;;;;;;;;;;;;;;23686:53;;:12;:53;;;:74;;;;;23743:17;23686:74;23682:157;;;23824:4;23776;:45;;:52;;;;;;;;;;;23682:157;23868:17;:15;:17::i;:::-;:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23868:39:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23868:39:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23868:39:12;;;;;;;;;;;;;;;;23852:55;;:12;:55;;;:77;;;;;23912:17;23911:18;23852:77;23848:151;;;23984:4;23945;:36;;:43;;;;;;;;;;;23848:151;24058:28;:26;:28::i;:::-;:51;;;24123:81;24164:4;:20;;;24186:17;24123:40;:81::i;:::-;24218:12;24244:1;24246;24261:17;:102;;24326:4;:37;;;24261:102;;;24281:4;:42;;;24261:102;24058:315;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24058:315:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24058:315:12;;;;24402:31;24418:4;:14;;;24402:11;:15;;:31;;;;:::i;:::-;24384:49;;20406:4034;;;;;;;;:::o;18966:1300::-;19164:159;19288:4;:10;;;:34;;;19164:106;19231:19;:17;:19::i;:::-;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19231:38:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19231:38:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19231:38:12;;;;;;;;;;;;;;;;19170:17;;;;;;;;;;;19164:34;;;19207:4;19164:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19164:49:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19164:49:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19164:49:12;;;;;;;;;;;;;;;;:66;;:106;;;;:::i;:::-;:123;;:159;;;;:::i;:::-;19119:4;:30;;:204;;;;;19393:17;:15;:17::i;:::-;:43;;;19437:1;19393:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19393:46:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19393:46:12;;;;19449:17;:15;:17::i;:::-;:48;;;19498:1;19449:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19449:51:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19449:51:12;;;;19511:19;:17;:19::i;:::-;:37;;;19562:27;19587:1;19562:4;:20;;;:24;;:27;;;;:::i;:::-;19603:43;19617:28;;19603:13;:43::i;:::-;19660:50;19674:35;;19660:13;:50::i;:::-;19724:53;19738:38;;19724:13;:53::i;:::-;19791:4;:37;;;19843:53;19857:38;;19843:13;:53::i;:::-;19910:60;19924:45;;19910:13;:60::i;:::-;19984:63;19998:48;;19984:13;:63::i;:::-;20061:4;:42;;;20118:3;20135:4;:30;;;20179:70;20218:4;:30;;;20179:4;:10;;;:34;;;:38;;:70;;;;:::i;:::-;19511:748;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19511:748:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19511:748:12;;;;18966:1300;:::o;3435:320:2:-;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;5464:198::-;5540:27;5613:41;5626:27;;5613:12;:41::i;:::-;5583:72;;5464:198;:::o;1262:401:4:-;1354:24;;:::i;:::-;1426:19;:17;:19::i;:::-;:43;;;1470:5;1426:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:50:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1426:50:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1426:50:4;;;;;;;;;;;;;;;;1394:5;:29;;:82;;;;;1527:19;:17;:19::i;:::-;:52;;;1580:5;1527:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:59:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:59:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1527:59:4;;;;;;;;;;;;;;;;1486:5;:38;;:100;;;;;1610:46;1626:5;:29;;;1610:15;:46::i;:::-;1596:5;:11;;:60;;;;1262:401;;;:::o;1083:224:12:-;1165:33;1250:49;1263:35;;1250:12;:49::i;:::-;1214:86;;1083:224;:::o;6680:195:2:-;6755:26;6826:41;6839:27;;6826:12;:41::i;:::-;6797:71;;6680:195;:::o;10469:825:12:-;10698:28;10736:27;10787:10;10777:7;:20;10773:515;;;10852:94;10935:10;10852:61;10897:15;10852:23;10867:7;10852:10;:14;;:23;;;;:::i;:::-;:44;;:61;;;;:::i;:::-;:82;;:94;;;;:::i;:::-;10813:133;;10961:18;:16;:18::i;:::-;:35;;;10997:5;11004:20;10961:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10961:64:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10961:64:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10961:64:12;;;;;;;;;;;;;;;;;;;;;;;;;;;10773:515;;;11094:103;11179:17;11094:63;11139:17;11094:23;11106:10;11094:7;:11;;:23;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;:84;;:103;;;;:::i;:::-;11056:141;;11212:18;:16;:18::i;:::-;:37;;;11250:5;11257:19;11212:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11212:65:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11212:65:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11212:65:12;;;;;;;;;;;;;;;;;;;;;;;;;;;10773:515;10469:825;;;;;;;;:::o;5668:191:2:-;5742:25;5811:40;5824:26;;5811:12;:40::i;:::-;5783:69;;5668:191;:::o;203:380:84:-;263:9;495:1;489:2;:7;485:36;;;513:1;506:8;;;;485:36;536:2;531;:7;527:11;;561:2;555;551:1;:6;;;;;;;;:12;544:20;;;;;;577:1;570:8;;203:380;;;;;:::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;899:201:7:-;974:28;1049:43;1062:29;;1049:12;:43::i;:::-;1018:75;;899:201;:::o;5259:199:2:-;5335:27;5408:42;5421:28;;5408:12;:42::i;:::-;5378:73;;5259:199;:::o;390:24052:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.25;\n\nimport \"@digix/cacp-contracts-dao/contracts/ResolverClient.sol\";\nimport \"../common/DaoRewardsManagerCommon.sol\";\nimport \"../lib/DaoStructs.sol\";\nimport \"../service/DaoCalculatorService.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\nimport \"./DaoRewardsManagerExtras.sol\";\n\n/**\n@title Contract to manage DGX rewards\n@author Digix Holdings\n*/\ncontract DaoRewardsManager is DaoRewardsManagerCommon {\n    using MathHelper for MathHelper;\n    using DaoStructs for DaoStructs.DaoQuarterInfo;\n    using DaoStructs for DaoStructs.IntermediateResults;\n\n    // is emitted when calculateGlobalRewardsBeforeNewQuarter has been done in the beginning of the quarter\n    // after which, all the other DAO activities could happen\n    event StartNewQuarter(uint256 indexed _quarterNumber);\n\n    address public ADDRESS_DGX_TOKEN;\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 daoRewardsManagerExtras()\n        internal\n        view\n        returns (DaoRewardsManagerExtras _contract)\n    {\n        _contract = DaoRewardsManagerExtras(get_contract(CONTRACT_DAO_REWARDS_MANAGER_EXTRAS));\n    }\n\n    /**\n    @notice Constructor (set the DaoQuarterInfo struct for the first quarter)\n    @param _resolver Address of the Contract Resolver contract\n    @param _dgxAddress Address of the Digix Gold Token contract\n    */\n    constructor(address _resolver, address _dgxAddress)\n        public\n    {\n        require(init(CONTRACT_DAO_REWARDS_MANAGER, _resolver));\n        ADDRESS_DGX_TOKEN = _dgxAddress;\n\n        // set the DaoQuarterInfo for the first quarter\n        daoRewardsStorage().updateQuarterInfo(\n            1,\n            getUintConfig(CONFIG_MINIMAL_QUARTER_POINT),\n            getUintConfig(CONFIG_QUARTER_POINT_SCALING_FACTOR),\n            getUintConfig(CONFIG_REPUTATION_POINT_SCALING_FACTOR),\n            0, // totalEffectiveDGDPreviousQuarter, Not Applicable, this value should not be used ever\n            getUintConfig(CONFIG_MODERATOR_MINIMAL_QUARTER_POINT),\n            getUintConfig(CONFIG_MODERATOR_QUARTER_POINT_SCALING_FACTOR),\n            getUintConfig(CONFIG_MODERATOR_REPUTATION_POINT_SCALING_FACTOR),\n            0, // _totalEffectiveModeratorDGDLastQuarter , Not applicable, this value should not be used ever\n\n            // _dgxDistributionDay, Not applicable, there shouldnt be any DGX rewards in the DAO now. The actual DGX fees that have been collected\n            // before the deployment of DigixDAO contracts would be counted as part of the DGX fees incurred in the first quarter\n            // this value should not be used ever\n            now,\n\n            0, // _dgxRewardsPoolLastQuarter, not applicable, this value should not be used ever\n            0 // sumRewardsFromBeginning, which is 0\n        );\n    }\n\n\n    /**\n    @notice Function to transfer the claimableDGXs to the new DaoRewardsManager\n    @dev This is done during the migrateToNewDao procedure\n    @param _newDaoRewardsManager Address of the new daoRewardsManager contract\n    */\n    function moveDGXsToNewDao(address _newDaoRewardsManager)\n        public\n    {\n        require(sender_is(CONTRACT_DAO));\n        uint256 _dgxBalance = ERC20(ADDRESS_DGX_TOKEN).balanceOf(address(this));\n        ERC20(ADDRESS_DGX_TOKEN).transfer(_newDaoRewardsManager, _dgxBalance);\n    }\n\n\n    /**\n    @notice Function for users to claim the claimable DGX rewards\n    @dev Will revert if _claimableDGX < MINIMUM_TRANSFER_AMOUNT of DGX.\n         Can only be called after calculateGlobalRewardsBeforeNewQuarter() has been called in the current quarter\n         This cannot be called once the current version of Dao contracts have been migrated to newer version\n    */\n    function claimRewards()\n        public\n        ifGlobalRewardsSet(currentQuarterNumber())\n    {\n        require(isDaoNotReplaced());\n\n        address _user = msg.sender;\n        uint256 _claimableDGX;\n\n        // update rewards for the quarter that he last participated in\n        (, _claimableDGX) = updateUserRewardsForLastParticipatingQuarter(_user);\n\n        // withdraw from his claimableDGXs\n        // This has to take into account demurrage\n        // Basically, the value of claimableDGXs in the contract is for the dgxDistributionDay of (lastParticipatedQuarter + 1)\n        // if now is after that, we need to deduct demurrage\n        uint256 _days_elapsed = now\n            .sub(\n                daoRewardsStorage().readDgxDistributionDay(\n                    daoRewardsStorage().lastQuarterThatRewardsWasUpdated(_user).add(1) // lastQuarterThatRewardsWasUpdated should be the same as lastParticipatedQuarter now\n                )\n            )\n            .div(1 days);\n\n         // similar logic as in the similar step in updateUserRewardsForLastParticipatingQuarter.\n         // it is as if the user has withdrawn all _claimableDGX, and the demurrage is paid back into the DAO immediately\n        daoRewardsStorage().addToTotalDgxClaimed(_claimableDGX);\n\n        _claimableDGX = _claimableDGX.sub(\n            daoCalculatorService().calculateDemurrage(\n                _claimableDGX,\n                _days_elapsed\n            ));\n\n        daoRewardsStorage().updateClaimableDGX(_user, 0);\n        ERC20(ADDRESS_DGX_TOKEN).transfer(_user, _claimableDGX);\n        // the _demurrageFees is implicitly \"transfered\" back into the DAO, and would be counted in the dgxRewardsPool of this quarter (in other words, dgxRewardsPoolLastQuarter of next quarter)\n    }\n\n\n    /**\n    @notice Function to update DGX rewards of user. This is only called during locking/withdrawing DGDs, or continuing participation for new quarter\n    @param _user Address of the DAO participant\n    */\n    function updateRewardsAndReputationBeforeNewQuarter(address _user)\n        public\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n\n        updateUserRewardsForLastParticipatingQuarter(_user);\n        updateUserReputationUntilPreviousQuarter(_user);\n    }\n\n\n    // This function would ALWAYS make sure that the user's Reputation Point is updated for ALL activities that has happened\n    // BEFORE this current quarter. These activities include:\n    //  - Reputation bonus/penalty due to participation in all of the previous quarters\n    //  - Reputation penalty for not participating for a few quarters, up until and including the previous quarter\n    //  - Badges redemption and carbon vote reputation redemption (that happens in the first time locking)\n    // As such, after this function is called on quarter N, the updated reputation point of the user would tentatively be used to calculate the rewards for quarter N\n    // Its tentative because the user can also redeem a badge during the period of quarter N to add to his reputation point.\n    function updateUserReputationUntilPreviousQuarter (address _user)\n        private\n    {\n        uint256 _lastParticipatedQuarter = daoRewardsStorage().lastParticipatedQuarter(_user);\n        uint256 _lastQuarterThatReputationWasUpdated = daoRewardsStorage().lastQuarterThatReputationWasUpdated(_user);\n        uint256 _reputationDeduction;\n\n        // If the reputation was already updated until the previous quarter\n        // nothing needs to be done\n        if (\n            _lastQuarterThatReputationWasUpdated.add(1) >= currentQuarterNumber()\n        ) {\n            return;\n        }\n\n        // first, we calculate and update the reputation change due to the user's governance activities in lastParticipatedQuarter, if it is not already updated.\n        // reputation is not updated for lastParticipatedQuarter yet is equivalent to _lastQuarterThatReputationWasUpdated == _lastParticipatedQuarter - 1\n        if (\n            (_lastQuarterThatReputationWasUpdated.add(1) == _lastParticipatedQuarter)\n        ) {\n            updateRPfromQP(\n                _user,\n                daoPointsStorage().getQuarterPoint(_user, _lastParticipatedQuarter),\n                getUintConfig(CONFIG_MINIMAL_QUARTER_POINT),\n                getUintConfig(CONFIG_MAXIMUM_REPUTATION_DEDUCTION),\n                getUintConfig(CONFIG_REPUTATION_PER_EXTRA_QP_NUM),\n                getUintConfig(CONFIG_REPUTATION_PER_EXTRA_QP_DEN)\n            );\n\n            // this user is not a Moderator for current quarter\n            // coz this step is done before updating the refreshModerator.\n            // But may have been a Moderator before, and if was moderator in their\n            // lastParticipatedQuarter, we will find them in the DoublyLinkedList.\n            if (daoStakeStorage().isInModeratorsList(_user)) {\n                updateRPfromQP(\n                    _user,\n                    daoPointsStorage().getQuarterModeratorPoint(_user, _lastParticipatedQuarter),\n                    getUintConfig(CONFIG_MODERATOR_MINIMAL_QUARTER_POINT),\n                    getUintConfig(CONFIG_MAXIMUM_MODERATOR_REPUTATION_DEDUCTION),\n                    getUintConfig(CONFIG_REPUTATION_PER_EXTRA_MODERATOR_QP_NUM),\n                    getUintConfig(CONFIG_REPUTATION_PER_EXTRA_MODERATOR_QP_DEN)\n                );\n            }\n            _lastQuarterThatReputationWasUpdated = _lastParticipatedQuarter;\n        }\n\n        // at this point, the _lastQuarterThatReputationWasUpdated MUST be at least the _lastParticipatedQuarter already\n        // Hence, any quarters between the _lastQuarterThatReputationWasUpdated and now must be a non-participating quarter,\n        // and this participant should be penalized for those.\n\n        // If this is their first ever participation, It is fine as well, as the reputation would be still be 0 after this step.\n        // note that the carbon vote's reputation bonus will be added after this, so its fine\n\n        _reputationDeduction =\n            (currentQuarterNumber().sub(1).sub(_lastQuarterThatReputationWasUpdated))\n            .mul(\n                getUintConfig(CONFIG_MAXIMUM_REPUTATION_DEDUCTION)\n                .add(getUintConfig(CONFIG_PUNISHMENT_FOR_NOT_LOCKING))\n            );\n\n        if (_reputationDeduction > 0) daoPointsStorage().reduceReputation(_user, _reputationDeduction);\n        daoRewardsStorage().updateLastQuarterThatReputationWasUpdated(_user, currentQuarterNumber().sub(1));\n    }\n\n\n    // update ReputationPoint of a participant based on QuarterPoint/ModeratorQuarterPoint in a quarter\n    function updateRPfromQP (\n        address _user,\n        uint256 _userQP,\n        uint256 _minimalQP,\n        uint256 _maxRPDeduction,\n        uint256 _rpPerExtraQP_num,\n        uint256 _rpPerExtraQP_den\n    ) internal {\n        uint256 _reputationDeduction;\n        uint256 _reputationAddition;\n        if (_userQP < _minimalQP) {\n            _reputationDeduction =\n                _minimalQP.sub(_userQP)\n                .mul(_maxRPDeduction)\n                .div(_minimalQP);\n\n            daoPointsStorage().reduceReputation(_user, _reputationDeduction);\n        } else {\n            _reputationAddition =\n                _userQP.sub(_minimalQP)\n                .mul(_rpPerExtraQP_num)\n                .div(_rpPerExtraQP_den);\n\n            daoPointsStorage().increaseReputation(_user, _reputationAddition);\n        }\n    }\n\n    // if the DGX rewards has not been calculated for the user's lastParticipatedQuarter, calculate and update it\n    function updateUserRewardsForLastParticipatingQuarter(address _user)\n        internal\n        returns (bool _valid, uint256 _userClaimableDgx)\n    {\n        UserRewards memory data = getUserRewardsStruct(_user);\n        _userClaimableDgx = daoRewardsStorage().claimableDGXs(_user);\n\n        // There is nothing to do if:\n        //   - The participant is already participating this quarter and hence this function has been called in this quarter\n        //   - We have updated the rewards to the lastParticipatedQuarter\n        // In ANY other cases: it means that the lastParticipatedQuarter is NOT this quarter, and its greater than lastQuarterThatRewardsWasUpdated, hence\n        // This also means that this participant has ALREADY PARTICIPATED at least once IN THE PAST, and we have not calculated for this quarter\n        // Thus, we need to calculate the Rewards for the lastParticipatedQuarter\n        if (\n            (currentQuarterNumber() == data.lastParticipatedQuarter) ||\n            (data.lastParticipatedQuarter <= data.lastQuarterThatRewardsWasUpdated)\n        ) {\n            return (false, _userClaimableDgx);\n        }\n\n        // now we will calculate the user rewards based on info of the data.lastParticipatedQuarter\n\n        // first we \"deduct the demurrage\" for the existing claimable DGXs for time period from\n        // dgxDistributionDay of (lastQuarterThatRewardsWasUpdated + 1) to dgxDistributionDay of (lastParticipatedQuarter + 1)\n        // (note that, when people participate in quarter n, the DGX rewards for quarter n is only released at the dgxDistributionDay of (n+1)th quarter)\n        uint256 _days_elapsed = daoRewardsStorage().readDgxDistributionDay(data.lastParticipatedQuarter.add(1))\n            .sub(daoRewardsStorage().readDgxDistributionDay(data.lastQuarterThatRewardsWasUpdated.add(1)))\n            .div(1 days);\n        uint256 _demurrageFees = daoCalculatorService().calculateDemurrage(\n            _userClaimableDgx,\n            _days_elapsed\n        );\n        _userClaimableDgx = _userClaimableDgx.sub(_demurrageFees);\n        // this demurrage fees will not be accurate to the hours, but we will leave it as this.\n\n        // this deducted demurrage is then added to the totalDGXsClaimed\n        // This is as if, the user claims exactly _demurrageFees DGXs, which would be used immediately to pay for the demurrage on his claimableDGXs,\n        // from dgxDistributionDay of (lastQuarterThatRewardsWasUpdated + 1) to dgxDistributionDay of (lastParticipatedQuarter + 1)\n        // This is done as such, so that this _demurrageFees would \"flow back into the DAO\" and be counted in the dgxRewardsPool of this current quarter (in other words, dgxRewardsPoolLastQuarter of the next quarter, as will be calculated in calculateGlobalRewardsBeforeNewQuarter of the next quarter)\n        // this is not 100% techinally correct as a demurrage concept, because this demurrage fees could have been incurred for the duration of the quarters in the past, but we will account them this way, as if its demurrage fees for this quarter, for simplicity.\n        daoRewardsStorage().addToTotalDgxClaimed(_demurrageFees);\n\n        uint256 _dgxRewardsAsParticipant;\n        uint256 _dgxRewardsAsModerator;\n        (_dgxRewardsAsParticipant, _dgxRewardsAsModerator) = daoRewardsManagerExtras().calculateUserRewardsForLastParticipatingQuarter(_user);\n        _userClaimableDgx = _userClaimableDgx.add(_dgxRewardsAsParticipant).add(_dgxRewardsAsModerator);\n\n        // update claimableDGXs. The calculation just now should have taken into account demurrage\n        // such that the demurrage has been paid until dgxDistributionDay of (lastParticipatedQuarter + 1)\n        daoRewardsStorage().updateClaimableDGX(_user, _userClaimableDgx);\n\n        // update lastQuarterThatRewardsWasUpdated\n        daoRewardsStorage().updateLastQuarterThatRewardsWasUpdated(_user, data.lastParticipatedQuarter);\n        _valid = true;\n    }\n\n    /**\n    @notice Function called by the founder after transfering the DGX fees into the DAO at the beginning of the quarter\n    @dev This function needs to do lots of calculation, so it might not fit into one transaction\n         As such, it could be done in multiple transactions, each time passing _operations which is the number of operations we want to calculate.\n         When the value of _done is finally true, that's when the calculation is done.\n         Only after this function runs, any other activities in the DAO could happen.\n\n         Basically, if there were M participants and N moderators in the previous quarter, it takes M+N \"operations\".\n\n         In summary, the function populates the DaoQuarterInfo of this quarter.\n         The bulk of the calculation is to go through every participant in the previous quarter to calculate their effectiveDGDBalance and sum them to get the\n         totalEffectiveDGDLastQuarter\n    */\n    function calculateGlobalRewardsBeforeNewQuarter(uint256 _operations)\n        public\n        if_founder()\n        returns (bool _done)\n    {\n        require(isDaoNotReplaced());\n        require(daoUpgradeStorage().startOfFirstQuarter() != 0); // start of first quarter must have been set already\n        require(isLockingPhase());\n        require(daoRewardsStorage().readDgxDistributionDay(currentQuarterNumber()) == 0); // throw if this function has already finished running this quarter\n\n        QuarterRewardsInfo memory info;\n        info.previousQuarter = currentQuarterNumber().sub(1);\n        require(info.previousQuarter > 0); // throw if this is the first quarter\n        info.qInfo = readQuarterInfo(info.previousQuarter);\n\n        DaoStructs.IntermediateResults memory interResults;\n        (\n            interResults.countedUntil,,,\n            info.totalEffectiveDGDPreviousQuarter\n        ) = intermediateResultsStorage().getIntermediateResults(\n            getIntermediateResultsIdForGlobalRewards(info.previousQuarter, false)\n        );\n\n        uint256 _operationsLeft = sumEffectiveBalance(info, false, _operations, interResults);\n        // now we are left with _operationsLeft operations\n        // the results is saved in interResults\n\n        // if we have not done with calculating the effective balance, quit.\n        if (!info.doneCalculatingEffectiveBalance) { return false; }\n\n        (\n            interResults.countedUntil,,,\n            info.totalEffectiveModeratorDGDLastQuarter\n        ) = intermediateResultsStorage().getIntermediateResults(\n            getIntermediateResultsIdForGlobalRewards(info.previousQuarter, true)\n        );\n\n        sumEffectiveBalance(info, true, _operationsLeft, interResults);\n\n        // if we have not done with calculating the moderator effective balance, quit.\n        if (!info.doneCalculatingModeratorEffectiveBalance) { return false; }\n\n        // we have done the heavey calculation, now save the quarter info\n        processGlobalRewardsUpdate(info);\n        _done = true;\n\n        emit StartNewQuarter(currentQuarterNumber());\n    }\n\n\n    // get the Id for the intermediateResult for a quarter's global rewards calculation\n    function getIntermediateResultsIdForGlobalRewards(uint256 _quarterNumber, bool _forModerator) internal view returns (bytes32 _id) {\n        _id = keccak256(abi.encodePacked(\n            _forModerator ? INTERMEDIATE_MODERATOR_DGD_IDENTIFIER : INTERMEDIATE_DGD_IDENTIFIER,\n            _quarterNumber\n        ));\n    }\n\n\n    // final step in calculateGlobalRewardsBeforeNewQuarter, which is to save the DaoQuarterInfo struct for this quarter\n    function processGlobalRewardsUpdate(QuarterRewardsInfo memory info) internal {\n        // calculate how much DGX rewards we got for this quarter\n        info.dgxRewardsPoolLastQuarter =\n            ERC20(ADDRESS_DGX_TOKEN).balanceOf(address(this))\n            .add(daoRewardsStorage().totalDGXsClaimed())\n            .sub(info.qInfo.sumRewardsFromBeginning);\n\n        // starting new quarter, no one locked in DGDs yet\n        daoStakeStorage().updateTotalLockedDGDStake(0);\n        daoStakeStorage().updateTotalModeratorLockedDGDs(0);\n\n        daoRewardsStorage().updateQuarterInfo(\n            info.previousQuarter.add(1),\n            getUintConfig(CONFIG_MINIMAL_QUARTER_POINT),\n            getUintConfig(CONFIG_QUARTER_POINT_SCALING_FACTOR),\n            getUintConfig(CONFIG_REPUTATION_POINT_SCALING_FACTOR),\n            info.totalEffectiveDGDPreviousQuarter,\n\n            getUintConfig(CONFIG_MODERATOR_MINIMAL_QUARTER_POINT),\n            getUintConfig(CONFIG_MODERATOR_QUARTER_POINT_SCALING_FACTOR),\n            getUintConfig(CONFIG_MODERATOR_REPUTATION_POINT_SCALING_FACTOR),\n            info.totalEffectiveModeratorDGDLastQuarter,\n\n            now,\n            info.dgxRewardsPoolLastQuarter,\n            info.qInfo.sumRewardsFromBeginning.add(info.dgxRewardsPoolLastQuarter)\n        );\n    }\n\n\n    // Sum the effective balance (could be effectiveDGDBalance or effectiveModeratorDGDBalance), given that we have _operations left\n    function sumEffectiveBalance (\n        QuarterRewardsInfo memory info,\n        bool _badgeCalculation, // false if this is the first step, true if its the second step\n        uint256 _operations,\n        DaoStructs.IntermediateResults memory _interResults\n    )\n        internal\n        returns (uint _operationsLeft)\n    {\n        if (_operations == 0) return _operations; // no more operations left, quit\n\n        if (_interResults.countedUntil == EMPTY_ADDRESS) {\n            // if this is the first time we are doing this calculation, we need to\n            // get the list of the participants to calculate by querying the first _operations participants\n            info.users = _badgeCalculation ?\n                daoListingService().listModerators(_operations, true)\n                : daoListingService().listParticipants(_operations, true);\n        } else {\n            info.users = _badgeCalculation ?\n                daoListingService().listModeratorsFrom(_interResults.countedUntil, _operations, true)\n                : daoListingService().listParticipantsFrom(_interResults.countedUntil, _operations, true);\n\n            // if this list is the already empty, it means this is the first step (calculating effective balance), and its already done;\n            if (info.users.length == 0) {\n                info.doneCalculatingEffectiveBalance = true;\n                return _operations;\n            }\n        }\n\n        address _lastAddress;\n        _lastAddress = info.users[info.users.length - 1];\n\n        info.userCount = info.users.length;\n        for (info.i=0;info.i<info.userCount;info.i++) {\n            info.currentUser = info.users[info.i];\n            // check if this participant really did participate in the previous quarter\n            if (daoRewardsStorage().lastParticipatedQuarter(info.currentUser) != info.previousQuarter) {\n                continue;\n            }\n            if (_badgeCalculation) {\n                info.totalEffectiveModeratorDGDLastQuarter = info.totalEffectiveModeratorDGDLastQuarter.add(daoCalculatorService().calculateUserEffectiveBalance(\n                    info.qInfo.moderatorMinimalParticipationPoint,\n                    info.qInfo.moderatorQuarterPointScalingFactor,\n                    info.qInfo.moderatorReputationPointScalingFactor,\n                    daoPointsStorage().getQuarterModeratorPoint(info.currentUser, info.previousQuarter),\n                    daoPointsStorage().getReputation(info.currentUser),\n                    daoStakeStorage().lockedDGDStake(info.currentUser)\n                ));\n            } else {\n                info.totalEffectiveDGDPreviousQuarter = info.totalEffectiveDGDPreviousQuarter.add(daoCalculatorService().calculateUserEffectiveBalance(\n                    info.qInfo.minimalParticipationPoint,\n                    info.qInfo.quarterPointScalingFactor,\n                    info.qInfo.reputationPointScalingFactor,\n                    daoPointsStorage().getQuarterPoint(info.currentUser, info.previousQuarter),\n                    daoPointsStorage().getReputation(info.currentUser),\n                    daoStakeStorage().lockedDGDStake(info.currentUser)\n                ));\n            }\n        }\n\n        // check if we have reached the last guy in the current list\n        if (_lastAddress == daoStakeStorage().readLastModerator() && _badgeCalculation) {\n            info.doneCalculatingModeratorEffectiveBalance = true;\n        }\n        if (_lastAddress == daoStakeStorage().readLastParticipant() && !_badgeCalculation) {\n            info.doneCalculatingEffectiveBalance = true;\n        }\n        // save to the intermediateResult storage\n        intermediateResultsStorage().setIntermediateResults(\n            getIntermediateResultsIdForGlobalRewards(info.previousQuarter, _badgeCalculation),\n            _lastAddress,\n            0,0,\n            _badgeCalculation ? info.totalEffectiveModeratorDGDLastQuarter : info.totalEffectiveDGDPreviousQuarter\n        );\n\n        _operationsLeft = _operations.sub(info.userCount);\n    }\n}\n",
  "sourcePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoRewardsManager.sol",
  "ast": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoRewardsManager.sol",
    "exportedSymbols": {
      "DaoRewardsManager": [
        4666
      ]
    },
    "id": 4667,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3535,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:12"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 3536,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 18629,
        "src": "26:64:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoRewardsManagerCommon.sol",
        "file": "../common/DaoRewardsManagerCommon.sol",
        "id": 3537,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 1769,
        "src": "91:47:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/lib/DaoStructs.sol",
        "file": "../lib/DaoStructs.sol",
        "id": 3538,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 8452,
        "src": "139:31:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/service/DaoCalculatorService.sol",
        "file": "../service/DaoCalculatorService.sol",
        "id": 3539,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 12094,
        "src": "171:45:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "id": 3540,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 25889,
        "src": "217:63:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoRewardsManagerExtras.sol",
        "file": "./DaoRewardsManagerExtras.sol",
        "id": 3541,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 4892,
        "src": "281:39:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3542,
              "name": "DaoRewardsManagerCommon",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1768,
              "src": "420:23:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoRewardsManagerCommon_$1768",
                "typeString": "contract DaoRewardsManagerCommon"
              }
            },
            "id": 3543,
            "nodeType": "InheritanceSpecifier",
            "src": "420:23:12"
          }
        ],
        "contractDependencies": [
          1282,
          1629,
          1768,
          1868,
          1960,
          18628
        ],
        "contractKind": "contract",
        "documentation": "@title Contract to manage DGX rewards\n@author Digix Holdings",
        "fullyImplemented": true,
        "id": 4666,
        "linearizedBaseContracts": [
          4666,
          1768,
          1282,
          1960,
          1868,
          1629,
          18628
        ],
        "name": "DaoRewardsManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3546,
            "libraryName": {
              "contractScope": null,
              "id": 3544,
              "name": "MathHelper",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8535,
              "src": "456:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MathHelper_$8535",
                "typeString": "library MathHelper"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "450:32:12",
            "typeName": {
              "contractScope": null,
              "id": 3545,
              "name": "MathHelper",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8535,
              "src": "471:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MathHelper_$8535",
                "typeString": "library MathHelper"
              }
            }
          },
          {
            "id": 3549,
            "libraryName": {
              "contractScope": null,
              "id": 3547,
              "name": "DaoStructs",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8451,
              "src": "493:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoStructs_$8451",
                "typeString": "library DaoStructs"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "487:47:12",
            "typeName": {
              "contractScope": null,
              "id": 3548,
              "name": "DaoStructs.DaoQuarterInfo",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8441,
              "src": "508:25:12",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_storage_ptr",
                "typeString": "struct DaoStructs.DaoQuarterInfo"
              }
            }
          },
          {
            "id": 3552,
            "libraryName": {
              "contractScope": null,
              "id": 3550,
              "name": "DaoStructs",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8451,
              "src": "545:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoStructs_$8451",
                "typeString": "library DaoStructs"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "539:52:12",
            "typeName": {
              "contractScope": null,
              "id": 3551,
              "name": "DaoStructs.IntermediateResults",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8450,
              "src": "560:30:12",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_IntermediateResults_$8450_storage_ptr",
                "typeString": "struct DaoStructs.IntermediateResults"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3556,
            "name": "StartNewQuarter",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3554,
                  "indexed": true,
                  "name": "_quarterNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 3556,
                  "src": "789:30:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "789:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "788:32:12"
            },
            "src": "767:54:12"
          },
          {
            "constant": false,
            "id": 3558,
            "name": "ADDRESS_DGX_TOKEN",
            "nodeType": "VariableDeclaration",
            "scope": 4666,
            "src": "827:32:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3557,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "827:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3571,
              "nodeType": "Block",
              "src": "981:96:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3563,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3561,
                      "src": "991:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3566,
                              "name": "CONTRACT_SERVICE_DAO_CALCULATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1394,
                              "src": "1037:31:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3565,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "1024:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 3567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1024:45:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3564,
                        "name": "DaoCalculatorService",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12093,
                        "src": "1003:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoCalculatorService_$12093_$",
                          "typeString": "type(contract DaoCalculatorService)"
                        }
                      },
                      "id": 3568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1003:67:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "src": "991:79:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "id": 3570,
                  "nodeType": "ExpressionStatement",
                  "src": "991:79:12"
                }
              ]
            },
            "documentation": null,
            "id": 3572,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoCalculatorService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "895:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3561,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "945:30:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                    "typeString": "contract DaoCalculatorService"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3560,
                    "name": "DaoCalculatorService",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12093,
                    "src": "945:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "944:32:12"
            },
            "scope": 4666,
            "src": "866:211:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3585,
              "nodeType": "Block",
              "src": "1204:103:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3577,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3575,
                      "src": "1214:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                        "typeString": "contract DaoRewardsManagerExtras"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3580,
                              "name": "CONTRACT_DAO_REWARDS_MANAGER_EXTRAS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1370,
                              "src": "1263:35:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3579,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "1250:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 3581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1250:49:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3578,
                        "name": "DaoRewardsManagerExtras",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4891,
                        "src": "1226:23:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoRewardsManagerExtras_$4891_$",
                          "typeString": "type(contract DaoRewardsManagerExtras)"
                        }
                      },
                      "id": 3582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1226:74:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                        "typeString": "contract DaoRewardsManagerExtras"
                      }
                    },
                    "src": "1214:86:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                      "typeString": "contract DaoRewardsManagerExtras"
                    }
                  },
                  "id": 3584,
                  "nodeType": "ExpressionStatement",
                  "src": "1214:86:12"
                }
              ]
            },
            "documentation": null,
            "id": 3586,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoRewardsManagerExtras",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1115:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3575,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 3586,
                  "src": "1165:33:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                    "typeString": "contract DaoRewardsManagerExtras"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3574,
                    "name": "DaoRewardsManagerExtras",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4891,
                    "src": "1165:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                      "typeString": "contract DaoRewardsManagerExtras"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1164:35:12"
            },
            "scope": 4666,
            "src": "1083:224:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3633,
              "nodeType": "Block",
              "src": "1604:1357:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3595,
                            "name": "CONTRACT_DAO_REWARDS_MANAGER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1367,
                            "src": "1627:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3596,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3588,
                            "src": "1657:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3594,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "1622:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 3597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1622:45:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3593,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1614:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1614:54:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3599,
                  "nodeType": "ExpressionStatement",
                  "src": "1614:54:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3600,
                      "name": "ADDRESS_DGX_TOKEN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3558,
                      "src": "1678:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3601,
                      "name": "_dgxAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3590,
                      "src": "1698:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1678:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3603,
                  "nodeType": "ExpressionStatement",
                  "src": "1678:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1827:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3609,
                            "name": "CONFIG_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "1856:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3608,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "1842:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1842:43:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3612,
                            "name": "CONFIG_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1526,
                            "src": "1913:35:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3611,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "1899:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1899:50:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3615,
                            "name": "CONFIG_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1529,
                            "src": "1977:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3614,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "1963:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1963:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2030:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3619,
                            "name": "CONFIG_MODERATOR_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1532,
                            "src": "2147:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3618,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "2133:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2133:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3622,
                            "name": "CONFIG_MODERATOR_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1535,
                            "src": "2214:45:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3621,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "2200:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3623,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2200:60:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3625,
                            "name": "CONFIG_MODERATOR_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1538,
                            "src": "2288:48:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3624,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "2274:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2274:63:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2351:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3628,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26184,
                        "src": "2789:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2807:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2904:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3604,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "1776:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1776:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateQuarterInfo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14707,
                      "src": "1776:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) external"
                      }
                    },
                    "id": 3631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1776:1178:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3632,
                  "nodeType": "ExpressionStatement",
                  "src": "1776:1178:12"
                }
              ]
            },
            "documentation": "@notice Constructor (set the DaoQuarterInfo struct for the first quarter)\n@param _resolver Address of the Contract Resolver contract\n@param _dgxAddress Address of the Digix Gold Token contract",
            "id": 3634,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3588,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 3634,
                  "src": "1545:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1545:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3590,
                  "name": "_dgxAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3634,
                  "src": "1564:19:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3589,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1564:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1544:40:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1604:0:12"
            },
            "scope": 4666,
            "src": "1533:1428:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3664,
              "nodeType": "Block",
              "src": "3277:209:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3641,
                            "name": "CONTRACT_DAO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1346,
                            "src": "3305:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3640,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3295:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 3642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3295:23:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3639,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3287:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3287:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3644,
                  "nodeType": "ExpressionStatement",
                  "src": "3287:32:12"
                },
                {
                  "assignments": [
                    3646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3646,
                      "name": "_dgxBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 3665,
                      "src": "3329:19:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3645,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3329:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3655,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3652,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26279,
                            "src": "3394:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                              "typeString": "contract DaoRewardsManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                              "typeString": "contract DaoRewardsManager"
                            }
                          ],
                          "id": 3651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3386:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3386:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3648,
                            "name": "ADDRESS_DGX_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "3357:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3647,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25888,
                          "src": "3351:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 3649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3351:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$25888",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 3650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25902,
                      "src": "3351:34:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 3654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3351:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3329:71:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3660,
                        "name": "_newDaoRewardsManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3636,
                        "src": "3444:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3661,
                        "name": "_dgxBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3646,
                        "src": "3467:11:12",
                        "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": 3657,
                            "name": "ADDRESS_DGX_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "3416:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3656,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25888,
                          "src": "3410:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 3658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3410:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$25888",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 3659,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25911,
                      "src": "3410:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 3662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3410:69:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3663,
                  "nodeType": "ExpressionStatement",
                  "src": "3410:69:12"
                }
              ]
            },
            "documentation": "@notice Function to transfer the claimableDGXs to the new DaoRewardsManager\n@dev This is done during the migrateToNewDao procedure\n@param _newDaoRewardsManager Address of the new daoRewardsManager contract",
            "id": 3665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "moveDGXsToNewDao",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3636,
                  "name": "_newDaoRewardsManager",
                  "nodeType": "VariableDeclaration",
                  "scope": 3665,
                  "src": "3227:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3227:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3226:31:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3638,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3277:0:12"
            },
            "scope": 4666,
            "src": "3201:285:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3746,
              "nodeType": "Block",
              "src": "3963:1675:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3673,
                          "name": "isDaoNotReplaced",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 918,
                          "src": "3981:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 3674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3981:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3672,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3973:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3973:27:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3676,
                  "nodeType": "ExpressionStatement",
                  "src": "3973:27:12"
                },
                {
                  "assignments": [
                    3678
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3678,
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "scope": 3747,
                      "src": "4011:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3677,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4011:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3681,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3679,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26182,
                      "src": "4027:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 3680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4027:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4011:26:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3683,
                      "name": "_claimableDGX",
                      "nodeType": "VariableDeclaration",
                      "scope": 3747,
                      "src": "4047:21:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3682,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4047:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3684,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4047:21:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 3685,
                          "name": "_claimableDGX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3683,
                          "src": "4153:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3686,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "4150:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_uint256_$",
                        "typeString": "tuple(,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3688,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3678,
                          "src": "4215:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3687,
                        "name": "updateUserRewardsForLastParticipatingQuarter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4114,
                        "src": "4170:44:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$_t_uint256_$",
                          "typeString": "function (address) returns (bool,uint256)"
                        }
                      },
                      "id": 3689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4170:51:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(bool,uint256)"
                      }
                    },
                    "src": "4150:71:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3691,
                  "nodeType": "ExpressionStatement",
                  "src": "4150:71:12"
                },
                {
                  "assignments": [
                    3693
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3693,
                      "name": "_days_elapsed",
                      "nodeType": "VariableDeclaration",
                      "scope": 3747,
                      "src": "4515:21:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3692,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4515:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3712,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4843:6:12",
                        "subdenomination": "days",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 3705,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4705:1:12",
                                    "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": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3702,
                                        "name": "_user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3678,
                                        "src": "4694:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 3699,
                                          "name": "daoRewardsStorage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1251,
                                          "src": "4641:17:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                                          }
                                        },
                                        "id": 3700,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4641:19:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                          "typeString": "contract DaoRewardsStorage"
                                        }
                                      },
                                      "id": 3701,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lastQuarterThatRewardsWasUpdated",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14579,
                                      "src": "4641:52:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 3703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4641:59:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25610,
                                  "src": "4641:63:12",
                                  "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": 3706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4641:66:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3696,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "4577:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 3697,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4577:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 3698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "readDgxDistributionDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15069,
                              "src": "4577:42:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 3707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4577:234:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3694,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26184,
                            "src": "4539:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "4539:20:12",
                          "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": 3708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4539:286:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3709,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25566,
                      "src": "4539:303:12",
                      "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": 3711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4539:311:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4515:335:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3716,
                        "name": "_claimableDGX",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3683,
                        "src": "5122:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3713,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "5081:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5081:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addToTotalDgxClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14832,
                      "src": "5081:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 3717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5081:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3718,
                  "nodeType": "ExpressionStatement",
                  "src": "5081:55:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3719,
                      "name": "_claimableDGX",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3683,
                      "src": "5147:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3725,
                              "name": "_claimableDGX",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3683,
                              "src": "5253:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3726,
                              "name": "_days_elapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3693,
                              "src": "5284:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3722,
                                "name": "daoCalculatorService",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3572,
                                "src": "5194:20:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                  "typeString": "function () view returns (contract DaoCalculatorService)"
                                }
                              },
                              "id": 3723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5194:22:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                "typeString": "contract DaoCalculatorService"
                              }
                            },
                            "id": 3724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "calculateDemurrage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12092,
                            "src": "5194:41:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 3727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5194:117:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3720,
                          "name": "_claimableDGX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3683,
                          "src": "5163:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "5163:17:12",
                        "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": 3728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5163:149:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5147:165:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3730,
                  "nodeType": "ExpressionStatement",
                  "src": "5147:165:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3734,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3678,
                        "src": "5362:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5369:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3731,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "5323:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5323:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateClaimableDGX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14727,
                      "src": "5323:38:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 3736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5323:48:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3737,
                  "nodeType": "ExpressionStatement",
                  "src": "5323:48:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3742,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3678,
                        "src": "5415:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3743,
                        "name": "_claimableDGX",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3683,
                        "src": "5422:13:12",
                        "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": 3739,
                            "name": "ADDRESS_DGX_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "5387:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3738,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25888,
                          "src": "5381:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 3740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5381:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$25888",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 3741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25911,
                      "src": "5381:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 3744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5381:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3745,
                  "nodeType": "ExpressionStatement",
                  "src": "5381:55:12"
                }
              ]
            },
            "documentation": "@notice Function for users to claim the claimable DGX rewards\n@dev Will revert if _claimableDGX < MINIMUM_TRANSFER_AMOUNT of DGX.\nCan only be called after calculateGlobalRewardsBeforeNewQuarter() has been called in the current quarter\nThis cannot be called once the current version of Dao contracts have been migrated to newer version",
            "id": 3747,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3668,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "3935:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3935:22:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3670,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3667,
                  "name": "ifGlobalRewardsSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 972,
                  "src": "3916:18:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3916:42:12"
              }
            ],
            "name": "claimRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3890:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3963:0:12"
            },
            "scope": 4666,
            "src": "3869:1769:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3766,
              "nodeType": "Block",
              "src": "5943:182:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3754,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "5971:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3753,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "5961:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5961:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3752,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "5953:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5953:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3757,
                  "nodeType": "ExpressionStatement",
                  "src": "5953:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3759,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3749,
                        "src": "6055:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3758,
                      "name": "updateUserRewardsForLastParticipatingQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4114,
                      "src": "6010:44:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (address) returns (bool,uint256)"
                      }
                    },
                    "id": 3760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6010:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3761,
                  "nodeType": "ExpressionStatement",
                  "src": "6010:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3763,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3749,
                        "src": "6112:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3762,
                      "name": "updateUserReputationUntilPreviousQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3910,
                      "src": "6071:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 3764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6071:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3765,
                  "nodeType": "ExpressionStatement",
                  "src": "6071:47:12"
                }
              ]
            },
            "documentation": "@notice Function to update DGX rewards of user. This is only called during locking/withdrawing DGDs, or continuing participation for new quarter\n@param _user Address of the DAO participant",
            "id": 3767,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateRewardsAndReputationBeforeNewQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3749,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3767,
                  "src": "5909:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3748,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5909:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5908:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5943:0:12"
            },
            "scope": 4666,
            "src": "5857:268:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3909,
              "nodeType": "Block",
              "src": "7006:3352:12",
              "statements": [
                {
                  "assignments": [
                    3773
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3773,
                      "name": "_lastParticipatedQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 3910,
                      "src": "7016:32:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3772,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7016:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3779,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3777,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3769,
                        "src": "7095:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3774,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "7051:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7051:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3776,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastParticipatedQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14571,
                      "src": "7051:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 3778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7051:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7016:85:12"
                },
                {
                  "assignments": [
                    3781
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3781,
                      "name": "_lastQuarterThatReputationWasUpdated",
                      "nodeType": "VariableDeclaration",
                      "scope": 3910,
                      "src": "7111:44:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3780,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7111:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3787,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3785,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3769,
                        "src": "7214:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3782,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "7158:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7158:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastQuarterThatReputationWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14583,
                      "src": "7158:55:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 3786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7158:62:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7111:109:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3789,
                      "name": "_reputationDeduction",
                      "nodeType": "VariableDeclaration",
                      "scope": 3910,
                      "src": "7230:28:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3788,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7230:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3790,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7230:28:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7439:1:12",
                          "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,
                          "id": 3791,
                          "name": "_lastQuarterThatReputationWasUpdated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3781,
                          "src": "7398:36:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "7398:40:12",
                        "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": 3794,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7398:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3795,
                        "name": "currentQuarterNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1021,
                        "src": "7445:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 3796,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7445:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7398:69:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3800,
                  "nodeType": "IfStatement",
                  "src": "7381:128:12",
                  "trueBody": {
                    "id": 3799,
                    "nodeType": "Block",
                    "src": "7478:31:12",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 3771,
                        "id": 3798,
                        "nodeType": "Return",
                        "src": "7492:7:12"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7895:1:12",
                              "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,
                              "id": 3801,
                              "name": "_lastQuarterThatReputationWasUpdated",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3781,
                              "src": "7854:36:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "7854:40:12",
                            "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": 3804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7854:43:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3805,
                          "name": "_lastParticipatedQuarter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3773,
                          "src": "7901:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7854:71:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3807,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7853:73:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3864,
                  "nodeType": "IfStatement",
                  "src": "7836:1479:12",
                  "trueBody": {
                    "id": 3863,
                    "nodeType": "Block",
                    "src": "7937:1378:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3809,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3769,
                              "src": "7983:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3813,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3769,
                                  "src": "8041:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3814,
                                  "name": "_lastParticipatedQuarter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3773,
                                  "src": "8048:24:12",
                                  "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": 3810,
                                    "name": "daoPointsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1237,
                                    "src": "8006:16:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                      "typeString": "function () view returns (contract DaoPointsStorage)"
                                    }
                                  },
                                  "id": 3811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8006:18:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                    "typeString": "contract DaoPointsStorage"
                                  }
                                },
                                "id": 3812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getQuarterPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14278,
                                "src": "8006:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256) view external returns (uint256)"
                                }
                              },
                              "id": 3815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8006:67:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3817,
                                  "name": "CONFIG_MINIMAL_QUARTER_POINT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1523,
                                  "src": "8105:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3816,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8091:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8091:43:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3820,
                                  "name": "CONFIG_MAXIMUM_REPUTATION_DEDUCTION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1577,
                                  "src": "8166:35:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3819,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8152:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8152:50:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3823,
                                  "name": "CONFIG_REPUTATION_PER_EXTRA_QP_NUM",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1583,
                                  "src": "8234:34:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3822,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8220:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8220:49:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3826,
                                  "name": "CONFIG_REPUTATION_PER_EXTRA_QP_DEN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1586,
                                  "src": "8301:34:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3825,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8287:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8287:49:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3808,
                            "name": "updateRPfromQP",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3978,
                            "src": "7951:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 3828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7951:399:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3829,
                        "nodeType": "ExpressionStatement",
                        "src": "7951:399:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3833,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3769,
                              "src": "8711:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3830,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "8674:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 3831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8674:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 3832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isInModeratorsList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15893,
                            "src": "8674:36:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view external returns (bool)"
                            }
                          },
                          "id": 3834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8674:43:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3858,
                        "nodeType": "IfStatement",
                        "src": "8670:558:12",
                        "trueBody": {
                          "id": 3857,
                          "nodeType": "Block",
                          "src": "8719:509:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3836,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3769,
                                    "src": "8773:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3840,
                                        "name": "_user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3769,
                                        "src": "8844:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3841,
                                        "name": "_lastParticipatedQuarter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3773,
                                        "src": "8851:24:12",
                                        "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": 3837,
                                          "name": "daoPointsStorage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1237,
                                          "src": "8800:16:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                            "typeString": "function () view returns (contract DaoPointsStorage)"
                                          }
                                        },
                                        "id": 3838,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8800:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                          "typeString": "contract DaoPointsStorage"
                                        }
                                      },
                                      "id": 3839,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getQuarterModeratorPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14297,
                                      "src": "8800:43:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (address,uint256) view external returns (uint256)"
                                      }
                                    },
                                    "id": 3842,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8800:76:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3844,
                                        "name": "CONFIG_MODERATOR_MINIMAL_QUARTER_POINT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1532,
                                        "src": "8912:38:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3843,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "8898:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8898:53:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3847,
                                        "name": "CONFIG_MAXIMUM_MODERATOR_REPUTATION_DEDUCTION",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1589,
                                        "src": "8987:45:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3846,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "8973:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3848,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8973:60:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3850,
                                        "name": "CONFIG_REPUTATION_PER_EXTRA_MODERATOR_QP_NUM",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1592,
                                        "src": "9069:44:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3849,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "9055:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3851,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9055:59:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3853,
                                        "name": "CONFIG_REPUTATION_PER_EXTRA_MODERATOR_QP_DEN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1595,
                                        "src": "9150:44:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3852,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "9136:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3854,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9136:59:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3835,
                                  "name": "updateRPfromQP",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3978,
                                  "src": "8737:14:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 3855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8737:476:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3856,
                              "nodeType": "ExpressionStatement",
                              "src": "8737:476:12"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3859,
                            "name": "_lastQuarterThatReputationWasUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3781,
                            "src": "9241:36:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3860,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3773,
                            "src": "9280:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9241:63:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3862,
                        "nodeType": "ExpressionStatement",
                        "src": "9241:63:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3885,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3865,
                      "name": "_reputationDeduction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3789,
                      "src": "9859:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3881,
                                  "name": "CONFIG_PUNISHMENT_FOR_NOT_LOCKING",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1580,
                                  "src": "10088:33:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3880,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "10074:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10074:48:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3877,
                                  "name": "CONFIG_MAXIMUM_REPUTATION_DEDUCTION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1577,
                                  "src": "10016:35:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3876,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "10002:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10002:50:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "10002:71:12",
                            "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": 3883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10002:121:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3872,
                                  "name": "_lastQuarterThatReputationWasUpdated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3781,
                                  "src": "9929:36:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3869,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9922:1:12",
                                      "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": 3866,
                                        "name": "currentQuarterNumber",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1021,
                                        "src": "9895:20:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                          "typeString": "function () view returns (uint256)"
                                        }
                                      },
                                      "id": 3867,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9895:22:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25586,
                                    "src": "9895:26:12",
                                    "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": 3870,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9895:29:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25586,
                                "src": "9895:33:12",
                                "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": 3873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9895:71:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3874,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9894:73:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3875,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25552,
                        "src": "9894:90:12",
                        "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": 3884,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9894:243:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9859:278:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3886,
                  "nodeType": "ExpressionStatement",
                  "src": "9859:278:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3887,
                      "name": "_reputationDeduction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3789,
                      "src": "10152:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3888,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10175:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10152:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3897,
                  "nodeType": "IfStatement",
                  "src": "10148:94:12",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3893,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3769,
                          "src": "10214:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3894,
                          "name": "_reputationDeduction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3789,
                          "src": "10221:20:12",
                          "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": 3890,
                            "name": "daoPointsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1237,
                            "src": "10178:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                              "typeString": "function () view returns (contract DaoPointsStorage)"
                            }
                          },
                          "id": 3891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10178:18:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                            "typeString": "contract DaoPointsStorage"
                          }
                        },
                        "id": 3892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reduceReputation",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14469,
                        "src": "10178:35:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address,uint256) external returns (uint256,uint256)"
                        }
                      },
                      "id": 3895,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10178:64:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "id": 3896,
                    "nodeType": "ExpressionStatement",
                    "src": "10178:64:12"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3901,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3769,
                        "src": "10314:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10348:1:12",
                            "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": 3902,
                              "name": "currentQuarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1021,
                              "src": "10321:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 3903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10321:22:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "10321:26:12",
                          "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": 3906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10321:29:12",
                        "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": 3898,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "10252:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10252:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateLastQuarterThatReputationWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14813,
                      "src": "10252:61:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 3907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10252:99:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3908,
                  "nodeType": "ExpressionStatement",
                  "src": "10252:99:12"
                }
              ]
            },
            "documentation": null,
            "id": 3910,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateUserReputationUntilPreviousQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3769,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3910,
                  "src": "6971:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3768,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6971:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6970:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3771,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7006:0:12"
            },
            "scope": 4666,
            "src": "6920:3438:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3977,
              "nodeType": "Block",
              "src": "10688:606:12",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3926,
                      "name": "_reputationDeduction",
                      "nodeType": "VariableDeclaration",
                      "scope": 3978,
                      "src": "10698:28:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3925,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10698:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3927,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10698:28:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3929,
                      "name": "_reputationAddition",
                      "nodeType": "VariableDeclaration",
                      "scope": 3978,
                      "src": "10736:27:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3928,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10736:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3930,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10736:27:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3931,
                      "name": "_userQP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3914,
                      "src": "10777:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3932,
                      "name": "_minimalQP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3916,
                      "src": "10787:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10777:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3975,
                    "nodeType": "Block",
                    "src": "11042:246:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3955,
                            "name": "_reputationAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3929,
                            "src": "11056:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3964,
                                "name": "_rpPerExtraQP_den",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3922,
                                "src": "11179:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3961,
                                    "name": "_rpPerExtraQP_num",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3920,
                                    "src": "11139:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3958,
                                        "name": "_minimalQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3916,
                                        "src": "11106:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3956,
                                        "name": "_userQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3914,
                                        "src": "11094:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3957,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25586,
                                      "src": "11094:11:12",
                                      "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": 3959,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11094:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25552,
                                  "src": "11094:44:12",
                                  "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": 3962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11094:63:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25566,
                              "src": "11094:84:12",
                              "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": 3965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11094:103:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11056:141:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3967,
                        "nodeType": "ExpressionStatement",
                        "src": "11056:141:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3971,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3912,
                              "src": "11250:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3972,
                              "name": "_reputationAddition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3929,
                              "src": "11257:19:12",
                              "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": 3968,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "11212:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 3969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11212:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 3970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increaseReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14384,
                            "src": "11212:37:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 3973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11212:65:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 3974,
                        "nodeType": "ExpressionStatement",
                        "src": "11212:65:12"
                      }
                    ]
                  },
                  "id": 3976,
                  "nodeType": "IfStatement",
                  "src": "10773:515:12",
                  "trueBody": {
                    "id": 3954,
                    "nodeType": "Block",
                    "src": "10799:237:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3934,
                            "name": "_reputationDeduction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3926,
                            "src": "10813:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3943,
                                "name": "_minimalQP",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3916,
                                "src": "10935:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3940,
                                    "name": "_maxRPDeduction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3918,
                                    "src": "10897:15:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3937,
                                        "name": "_userQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3914,
                                        "src": "10867:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3935,
                                        "name": "_minimalQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3916,
                                        "src": "10852:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3936,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25586,
                                      "src": "10852:14:12",
                                      "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": 3938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10852:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25552,
                                  "src": "10852:44:12",
                                  "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": 3941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10852:61:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25566,
                              "src": "10852:82:12",
                              "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": 3944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10852:94:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10813:133:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3946,
                        "nodeType": "ExpressionStatement",
                        "src": "10813:133:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3950,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3912,
                              "src": "10997:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3951,
                              "name": "_reputationDeduction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3926,
                              "src": "11004:20:12",
                              "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": 3947,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "10961:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 3948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10961:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 3949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reduceReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14469,
                            "src": "10961:35:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 3952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10961:64:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 3953,
                        "nodeType": "ExpressionStatement",
                        "src": "10961:64:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3978,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateRPfromQP",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3912,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10503:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3911,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10503:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3914,
                  "name": "_userQP",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10526:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10526:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3916,
                  "name": "_minimalQP",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10551:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3915,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10551:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3918,
                  "name": "_maxRPDeduction",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10579:23:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3917,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10579:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3920,
                  "name": "_rpPerExtraQP_num",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10612:25:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3919,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10612:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3922,
                  "name": "_rpPerExtraQP_den",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10647:25:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3921,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10647:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10493:185:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3924,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10688:0:12"
            },
            "scope": 4666,
            "src": "10469:825:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4113,
              "nodeType": "Block",
              "src": "11561:3809:12",
              "statements": [
                {
                  "assignments": [
                    3988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3988,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "11571:23:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                        "typeString": "struct DaoRewardsManagerCommon.UserRewards"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3987,
                        "name": "UserRewards",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1649,
                        "src": "11571:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserRewards_$1649_storage_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.UserRewards"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3992,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3990,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3980,
                        "src": "11618:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3989,
                      "name": "getUserRewardsStruct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1710,
                      "src": "11597:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_UserRewards_$1649_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoRewardsManagerCommon.UserRewards memory)"
                      }
                    },
                    "id": 3991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11597:27:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                      "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11571:53:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3993,
                      "name": "_userClaimableDgx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3985,
                      "src": "11634:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3997,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3980,
                          "src": "11688:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3994,
                            "name": "daoRewardsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1251,
                            "src": "11654:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                              "typeString": "function () view returns (contract DaoRewardsStorage)"
                            }
                          },
                          "id": 3995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11654:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                            "typeString": "contract DaoRewardsStorage"
                          }
                        },
                        "id": 3996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "claimableDGXs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14565,
                        "src": "11654:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 3998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11654:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11634:60:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4000,
                  "nodeType": "ExpressionStatement",
                  "src": "11634:60:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4001,
                              "name": "currentQuarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1021,
                              "src": "12342:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12342:22:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4003,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3988,
                              "src": "12368:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                              }
                            },
                            "id": 4004,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastParticipatedQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1640,
                            "src": "12368:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12342:54:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 4006,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "12341:56:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4007,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3988,
                              "src": "12414:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                              }
                            },
                            "id": 4008,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastParticipatedQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1640,
                            "src": "12414:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4009,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3988,
                              "src": "12446:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                              }
                            },
                            "id": 4010,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastQuarterThatRewardsWasUpdated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1642,
                            "src": "12446:37:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12414:69:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 4012,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "12413:71:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12341:143:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4019,
                  "nodeType": "IfStatement",
                  "src": "12324:229:12",
                  "trueBody": {
                    "id": 4018,
                    "nodeType": "Block",
                    "src": "12495:58:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 4014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12517:5:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "id": 4015,
                              "name": "_userClaimableDgx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3985,
                              "src": "12524:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4016,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12516:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 3986,
                        "id": 4017,
                        "nodeType": "Return",
                        "src": "12509:33:12"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    4021
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4021,
                      "name": "_days_elapsed",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "13041:21:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4020,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13041:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4045,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13269:6:12",
                        "subdenomination": "days",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4038,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13247:1:12",
                                    "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,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4035,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3988,
                                      "src": "13205:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                        "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                                      }
                                    },
                                    "id": 4036,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastQuarterThatRewardsWasUpdated",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1642,
                                    "src": "13205:37:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4037,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25610,
                                  "src": "13205:41:12",
                                  "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": 4039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13205:44:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4032,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "13162:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 4033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13162:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 4034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "readDgxDistributionDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15069,
                              "src": "13162:42:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 4040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13162:88:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4028,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13141:1:12",
                                    "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,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4025,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3988,
                                      "src": "13108:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                        "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                                      }
                                    },
                                    "id": 4026,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastParticipatedQuarter",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1640,
                                    "src": "13108:28:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4027,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25610,
                                  "src": "13108:32:12",
                                  "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": 4029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13108:35:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4022,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "13065:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 4023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13065:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 4024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "readDgxDistributionDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15069,
                              "src": "13065:42:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 4030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13065:79:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "13065:96:12",
                          "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": 4041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13065:186:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25566,
                      "src": "13065:203:12",
                      "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": 4044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13065:211:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13041:235:12"
                },
                {
                  "assignments": [
                    4047
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4047,
                      "name": "_demurrageFees",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "13286:22:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4046,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13286:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4054,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4051,
                        "name": "_userClaimableDgx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3985,
                        "src": "13366:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4052,
                        "name": "_days_elapsed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4021,
                        "src": "13397:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4048,
                          "name": "daoCalculatorService",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3572,
                          "src": "13311:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                            "typeString": "function () view returns (contract DaoCalculatorService)"
                          }
                        },
                        "id": 4049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13311:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                          "typeString": "contract DaoCalculatorService"
                        }
                      },
                      "id": 4050,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "calculateDemurrage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12092,
                      "src": "13311:41:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 4053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13311:109:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13286:134:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4055,
                      "name": "_userClaimableDgx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3985,
                      "src": "13430:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4058,
                          "name": "_demurrageFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4047,
                          "src": "13472:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4056,
                          "name": "_userClaimableDgx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3985,
                          "src": "13450:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "13450:21:12",
                        "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": 4059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13450:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13430:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4061,
                  "nodeType": "ExpressionStatement",
                  "src": "13430:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4065,
                        "name": "_demurrageFees",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4047,
                        "src": "14556:14:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4062,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "14515:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14515:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4064,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addToTotalDgxClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14832,
                      "src": "14515:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14515:56:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4067,
                  "nodeType": "ExpressionStatement",
                  "src": "14515:56:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4069,
                      "name": "_dgxRewardsAsParticipant",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "14582:32:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4068,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14582:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4070,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14582:32:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4072,
                      "name": "_dgxRewardsAsModerator",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "14624:30:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4071,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14624:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4073,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14624:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 4074,
                          "name": "_dgxRewardsAsParticipant",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4069,
                          "src": "14665:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4075,
                          "name": "_dgxRewardsAsModerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4072,
                          "src": "14691:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4076,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "14664:50:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4080,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3980,
                          "src": "14791:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4077,
                            "name": "daoRewardsManagerExtras",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3586,
                            "src": "14717:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsManagerExtras_$4891_$",
                              "typeString": "function () view returns (contract DaoRewardsManagerExtras)"
                            }
                          },
                          "id": 4078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14717:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                            "typeString": "contract DaoRewardsManagerExtras"
                          }
                        },
                        "id": 4079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "calculateUserRewardsForLastParticipatingQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4890,
                        "src": "14717:73:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256,uint256)"
                        }
                      },
                      "id": 4081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14717:80:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "14664:133:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4083,
                  "nodeType": "ExpressionStatement",
                  "src": "14664:133:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4084,
                      "name": "_userClaimableDgx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3985,
                      "src": "14807:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4090,
                          "name": "_dgxRewardsAsModerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4072,
                          "src": "14879:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4087,
                              "name": "_dgxRewardsAsParticipant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4069,
                              "src": "14849:24:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4085,
                              "name": "_userClaimableDgx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3985,
                              "src": "14827:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "14827:21:12",
                            "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": 4088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14827:47:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "14827:51:12",
                        "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": 4091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14827:75:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14807:95:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4093,
                  "nodeType": "ExpressionStatement",
                  "src": "14807:95:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4097,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3980,
                        "src": "15158:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4098,
                        "name": "_userClaimableDgx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3985,
                        "src": "15165:17:12",
                        "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": 4094,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "15119:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15119:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateClaimableDGX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14727,
                      "src": "15119:38:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 4099,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15119:64:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4100,
                  "nodeType": "ExpressionStatement",
                  "src": "15119:64:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4104,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3980,
                        "src": "15304:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4105,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3988,
                          "src": "15311:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                          }
                        },
                        "id": 4106,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lastParticipatedQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1640,
                        "src": "15311:28:12",
                        "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": 4101,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "15245:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15245:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateLastQuarterThatRewardsWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14790,
                      "src": "15245:58:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 4107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15245:95:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4108,
                  "nodeType": "ExpressionStatement",
                  "src": "15245:95:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4109,
                      "name": "_valid",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3983,
                      "src": "15350:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4110,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15359:4:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "15350:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4112,
                  "nodeType": "ExpressionStatement",
                  "src": "15350:13:12"
                }
              ]
            },
            "documentation": null,
            "id": 4114,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateUserRewardsForLastParticipatingQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3980,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 4114,
                  "src": "11468:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3979,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11468:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11467:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3983,
                  "name": "_valid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4114,
                  "src": "11517:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3982,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11517:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3985,
                  "name": "_userClaimableDgx",
                  "nodeType": "VariableDeclaration",
                  "scope": 4114,
                  "src": "11530:25:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11530:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11516:40:12"
            },
            "scope": 4666,
            "src": "11414:3956:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4264,
              "nodeType": "Block",
              "src": "16462:1966:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4124,
                          "name": "isDaoNotReplaced",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 918,
                          "src": "16480:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 4125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16480:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4123,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16472:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16472:27:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4127,
                  "nodeType": "ExpressionStatement",
                  "src": "16472:27:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4129,
                                "name": "daoUpgradeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1209,
                                "src": "16517:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoUpgradeStorage_$17964_$",
                                  "typeString": "function () view returns (contract DaoUpgradeStorage)"
                                }
                              },
                              "id": 4130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16517:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoUpgradeStorage_$17964",
                                "typeString": "contract DaoUpgradeStorage"
                              }
                            },
                            "id": 4131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startOfFirstQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17884,
                            "src": "16517:39:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 4132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16517:41:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16562:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16517:46:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16509:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16509:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4136,
                  "nodeType": "ExpressionStatement",
                  "src": "16509:55:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4138,
                          "name": "isLockingPhase",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 933,
                          "src": "16635:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 4139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16635:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4137,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16627:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16627:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4141,
                  "nodeType": "ExpressionStatement",
                  "src": "16627:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4146,
                                "name": "currentQuarterNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1021,
                                "src": "16713:20:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 4147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16713:22:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4143,
                                "name": "daoRewardsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1251,
                                "src": "16670:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                  "typeString": "function () view returns (contract DaoRewardsStorage)"
                                }
                              },
                              "id": 4144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16670:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                "typeString": "contract DaoRewardsStorage"
                              }
                            },
                            "id": 4145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "readDgxDistributionDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15069,
                            "src": "16670:42:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view external returns (uint256)"
                            }
                          },
                          "id": 4148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16670:66:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16740:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16670:71:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4142,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16662:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16662:80:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4152,
                  "nodeType": "ExpressionStatement",
                  "src": "16662:80:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4154,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 4265,
                      "src": "16821:30:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                        "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4153,
                        "name": "QuarterRewardsInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1673,
                        "src": "16821:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_storage_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4155,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16821:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4156,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "16861:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4158,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "previousQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1651,
                      "src": "16861:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 4162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16911:1:12",
                          "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": 4159,
                            "name": "currentQuarterNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1021,
                            "src": "16884:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 4160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16884:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "16884:26:12",
                        "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": 4163,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16884:29:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16861:52:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4165,
                  "nodeType": "ExpressionStatement",
                  "src": "16861:52:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4167,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "16931:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4168,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "previousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1651,
                          "src": "16931:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16954:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16931:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4166,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16923:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16923:33:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4172,
                  "nodeType": "ExpressionStatement",
                  "src": "16923:33:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4173,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "17004:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4175,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "qInfo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1663,
                      "src": "17004:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                        "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4177,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "17033:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4178,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "previousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1651,
                          "src": "17033:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4176,
                        "name": "readQuarterInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1767,
                        "src": "17017:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_struct$_DaoQuarterInfo_$8441_memory_ptr_$",
                          "typeString": "function (uint256) view returns (struct DaoStructs.DaoQuarterInfo memory)"
                        }
                      },
                      "id": 4179,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17017:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory_ptr",
                        "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                      }
                    },
                    "src": "17004:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                      "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                    }
                  },
                  "id": 4181,
                  "nodeType": "ExpressionStatement",
                  "src": "17004:50:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4185,
                      "name": "interResults",
                      "nodeType": "VariableDeclaration",
                      "scope": 4265,
                      "src": "17065:50:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                        "typeString": "struct DaoStructs.IntermediateResults"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4184,
                        "name": "DaoStructs.IntermediateResults",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8450,
                        "src": "17065:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_storage_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4186,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17065:50:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4187,
                            "name": "interResults",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4185,
                            "src": "17139:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                              "typeString": "struct DaoStructs.IntermediateResults memory"
                            }
                          },
                          "id": 4189,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "countedUntil",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8449,
                          "src": "17139:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        null,
                        null,
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4190,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "17180:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4191,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "totalEffectiveDGDPreviousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1653,
                          "src": "17180:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4192,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "17125:102:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$__$__$_t_uint256_$",
                        "typeString": "tuple(address,,,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4197,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4154,
                                "src": "17336:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4198,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "previousQuarter",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1651,
                              "src": "17336:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 4199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17358:5:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4196,
                            "name": "getIntermediateResultsIdForGlobalRewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4288,
                            "src": "17295:40:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bool_$returns$_t_bytes32_$",
                              "typeString": "function (uint256,bool) view returns (bytes32)"
                            }
                          },
                          "id": 4200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17295:69:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4193,
                            "name": "intermediateResultsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1265,
                            "src": "17230:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IntermediateResultsStorage_$18157_$",
                              "typeString": "function () view returns (contract IntermediateResultsStorage)"
                            }
                          },
                          "id": 4194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17230:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IntermediateResultsStorage_$18157",
                            "typeString": "contract IntermediateResultsStorage"
                          }
                        },
                        "id": 4195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getIntermediateResults",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18081,
                        "src": "17230:51:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes32) view external returns (address,uint256,uint256,uint256)"
                        }
                      },
                      "id": 4201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17230:144:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256,uint256)"
                      }
                    },
                    "src": "17125:249:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4203,
                  "nodeType": "ExpressionStatement",
                  "src": "17125:249:12"
                },
                {
                  "assignments": [
                    4205
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4205,
                      "name": "_operationsLeft",
                      "nodeType": "VariableDeclaration",
                      "scope": 4265,
                      "src": "17385:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4204,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17385:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4212,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4207,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "17431:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17437:5:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "id": 4209,
                        "name": "_operations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4116,
                        "src": "17444:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4210,
                        "name": "interResults",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4185,
                        "src": "17457:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      ],
                      "id": 4206,
                      "name": "sumEffectiveBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4665,
                      "src": "17411:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_QuarterRewardsInfo_$1673_memory_ptr_$_t_bool_$_t_uint256_$_t_struct$_IntermediateResults_$8450_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct DaoRewardsManagerCommon.QuarterRewardsInfo memory,bool,uint256,struct DaoStructs.IntermediateResults memory) returns (uint256)"
                      }
                    },
                    "id": 4211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17411:59:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17385:85:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "17669:37:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4213,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "17670:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4214,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "doneCalculatingEffectiveBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1670,
                      "src": "17670:36:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4219,
                  "nodeType": "IfStatement",
                  "src": "17665:60:12",
                  "trueBody": {
                    "id": 4218,
                    "nodeType": "Block",
                    "src": "17708:17:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 4216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17717:5:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 4122,
                        "id": 4217,
                        "nodeType": "Return",
                        "src": "17710:12:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4220,
                            "name": "interResults",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4185,
                            "src": "17749:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                              "typeString": "struct DaoStructs.IntermediateResults memory"
                            }
                          },
                          "id": 4222,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "countedUntil",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8449,
                          "src": "17749:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        null,
                        null,
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4223,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "17790:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4224,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "totalEffectiveModeratorDGDLastQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1655,
                          "src": "17790:42:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4225,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "17735:107:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$__$__$_t_uint256_$",
                        "typeString": "tuple(address,,,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4230,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4154,
                                "src": "17951:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4231,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "previousQuarter",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1651,
                              "src": "17951:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 4232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17973:4:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4229,
                            "name": "getIntermediateResultsIdForGlobalRewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4288,
                            "src": "17910:40:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bool_$returns$_t_bytes32_$",
                              "typeString": "function (uint256,bool) view returns (bytes32)"
                            }
                          },
                          "id": 4233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17910:68:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4226,
                            "name": "intermediateResultsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1265,
                            "src": "17845:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IntermediateResultsStorage_$18157_$",
                              "typeString": "function () view returns (contract IntermediateResultsStorage)"
                            }
                          },
                          "id": 4227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17845:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IntermediateResultsStorage_$18157",
                            "typeString": "contract IntermediateResultsStorage"
                          }
                        },
                        "id": 4228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getIntermediateResults",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18081,
                        "src": "17845:51:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes32) view external returns (address,uint256,uint256,uint256)"
                        }
                      },
                      "id": 4234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17845:143:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256,uint256)"
                      }
                    },
                    "src": "17735:253:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4236,
                  "nodeType": "ExpressionStatement",
                  "src": "17735:253:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4238,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "18019:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18025:4:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "id": 4240,
                        "name": "_operationsLeft",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4205,
                        "src": "18031:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4241,
                        "name": "interResults",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4185,
                        "src": "18048:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      ],
                      "id": 4237,
                      "name": "sumEffectiveBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4665,
                      "src": "17999:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_QuarterRewardsInfo_$1673_memory_ptr_$_t_bool_$_t_uint256_$_t_struct$_IntermediateResults_$8450_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct DaoRewardsManagerCommon.QuarterRewardsInfo memory,bool,uint256,struct DaoStructs.IntermediateResults memory) returns (uint256)"
                      }
                    },
                    "id": 4242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17999:62:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4243,
                  "nodeType": "ExpressionStatement",
                  "src": "17999:62:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "18163:46:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4244,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "18164:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4245,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "doneCalculatingModeratorEffectiveBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1672,
                      "src": "18164:45:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4250,
                  "nodeType": "IfStatement",
                  "src": "18159:69:12",
                  "trueBody": {
                    "id": 4249,
                    "nodeType": "Block",
                    "src": "18211:17:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 4247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18220:5:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 4122,
                        "id": 4248,
                        "nodeType": "Return",
                        "src": "18213:12:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4252,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "18339:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      ],
                      "id": 4251,
                      "name": "processGlobalRewardsUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4372,
                      "src": "18312:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_QuarterRewardsInfo_$1673_memory_ptr_$returns$__$",
                        "typeString": "function (struct DaoRewardsManagerCommon.QuarterRewardsInfo memory)"
                      }
                    },
                    "id": 4253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18312:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4254,
                  "nodeType": "ExpressionStatement",
                  "src": "18312:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4255,
                      "name": "_done",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4121,
                      "src": "18354:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18362:4:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "18354:12:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4258,
                  "nodeType": "ExpressionStatement",
                  "src": "18354:12:12"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4260,
                          "name": "currentQuarterNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1021,
                          "src": "18398:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 4261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18398:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4259,
                      "name": "StartNewQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3556,
                      "src": "18382:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18382:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4263,
                  "nodeType": "EmitStatement",
                  "src": "18377:44:12"
                }
              ]
            },
            "documentation": "@notice Function called by the founder after transfering the DGX fees into the DAO at the beginning of the quarter\n@dev This function needs to do lots of calculation, so it might not fit into one transaction\nAs such, it could be done in multiple transactions, each time passing _operations which is the number of operations we want to calculate.\nWhen the value of _done is finally true, that's when the calculation is done.\nOnly after this function runs, any other activities in the DAO could happen.\nBasically, if there were M participants and N moderators in the previous quarter, it takes M+N \"operations\".\nIn summary, the function populates the DaoQuarterInfo of this quarter.\nThe bulk of the calculation is to go through every participant in the previous quarter to calculate their effectiveDGDBalance and sum them to get the\ntotalEffectiveDGDLastQuarter",
            "id": 4265,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 4119,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4118,
                  "name": "if_founder",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1898,
                  "src": "16416:10:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "16416:12:12"
              }
            ],
            "name": "calculateGlobalRewardsBeforeNewQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4116,
                  "name": "_operations",
                  "nodeType": "VariableDeclaration",
                  "scope": 4265,
                  "src": "16372:19:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16372:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16371:21:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4121,
                  "name": "_done",
                  "nodeType": "VariableDeclaration",
                  "scope": 4265,
                  "src": "16446:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4120,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16446:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16445:12:12"
            },
            "scope": 4666,
            "src": "16324:2104:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4287,
              "nodeType": "Block",
              "src": "18653:185:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4274,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4272,
                      "src": "18663:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 4278,
                                "name": "_forModerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4269,
                                "src": "18709:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "id": 4280,
                                "name": "INTERMEDIATE_DGD_IDENTIFIER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1337,
                                "src": "18765:27:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 4281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "18709:83:12",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 4279,
                                "name": "INTERMEDIATE_MODERATOR_DGD_IDENTIFIER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1340,
                                "src": "18725:37:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4282,
                              "name": "_quarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4267,
                              "src": "18806:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4276,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26169,
                              "src": "18679:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 4277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18679:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 4283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18679:151:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4275,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26176,
                        "src": "18669:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                          "typeString": "function () pure returns (bytes32)"
                        }
                      },
                      "id": 4284,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18669:162:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18663:168:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4286,
                  "nodeType": "ExpressionStatement",
                  "src": "18663:168:12"
                }
              ]
            },
            "documentation": null,
            "id": 4288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getIntermediateResultsIdForGlobalRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4267,
                  "name": "_quarterNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4288,
                  "src": "18573:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4266,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18573:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4269,
                  "name": "_forModerator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4288,
                  "src": "18597:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4268,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18597:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18572:44:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4272,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 4288,
                  "src": "18640:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4271,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18640:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18639:13:12"
            },
            "scope": 4666,
            "src": "18523:315:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4371,
              "nodeType": "Block",
              "src": "19043:1223:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4293,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4290,
                        "src": "19119:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4295,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dgxRewardsPoolLastQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1657,
                      "src": "19119:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4311,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "19288:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4312,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "qInfo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1663,
                            "src": "19288:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                            }
                          },
                          "id": 4313,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sumRewardsFromBeginning",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8440,
                          "src": "19288:34:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4305,
                                    "name": "daoRewardsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1251,
                                    "src": "19231:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                      "typeString": "function () view returns (contract DaoRewardsStorage)"
                                    }
                                  },
                                  "id": 4306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19231:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                    "typeString": "contract DaoRewardsStorage"
                                  }
                                },
                                "id": 4307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalDGXsClaimed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14567,
                                "src": "19231:36:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 4308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19231:38:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4301,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26279,
                                      "src": "19207:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                                        "typeString": "contract DaoRewardsManager"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                                        "typeString": "contract DaoRewardsManager"
                                      }
                                    ],
                                    "id": 4300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "19199:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 4302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19199:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4297,
                                      "name": "ADDRESS_DGX_TOKEN",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3558,
                                      "src": "19170:17:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 4296,
                                    "name": "ERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25888,
                                    "src": "19164:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                      "typeString": "type(contract ERC20)"
                                    }
                                  },
                                  "id": 4298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19164:24:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$25888",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 4299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25902,
                                "src": "19164:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 4303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19164:49:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "19164:66:12",
                            "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": 4309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19164:106:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "19164:123:12",
                        "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": 4314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19164:159:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19119:204:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4316,
                  "nodeType": "ExpressionStatement",
                  "src": "19119:204:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19437:1:12",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4317,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "19393:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 4318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19393:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 4319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15706,
                      "src": "19393:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19393:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4322,
                  "nodeType": "ExpressionStatement",
                  "src": "19393:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19498:1:12",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4323,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "19449:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 4324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19449:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 4325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalModeratorLockedDGDs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15725,
                      "src": "19449:48:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19449:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4328,
                  "nodeType": "ExpressionStatement",
                  "src": "19449:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19587:1:12",
                            "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,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4332,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "19562:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4333,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "previousQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1651,
                            "src": "19562:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25610,
                          "src": "19562:24:12",
                          "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": 4336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19562:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4338,
                            "name": "CONFIG_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "19617:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4337,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19603:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19603:43:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4341,
                            "name": "CONFIG_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1526,
                            "src": "19674:35:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4340,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19660:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19660:50:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4344,
                            "name": "CONFIG_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1529,
                            "src": "19738:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4343,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19724:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19724:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4346,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "19791:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4347,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalEffectiveDGDPreviousQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1653,
                        "src": "19791:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4349,
                            "name": "CONFIG_MODERATOR_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1532,
                            "src": "19857:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4348,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19843:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19843:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4352,
                            "name": "CONFIG_MODERATOR_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1535,
                            "src": "19924:45:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4351,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19910:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19910:60:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4355,
                            "name": "CONFIG_MODERATOR_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1538,
                            "src": "19998:48:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4354,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19984:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19984:63:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4357,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "20061:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4358,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalEffectiveModeratorDGDLastQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1655,
                        "src": "20061:42:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4359,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26184,
                        "src": "20118:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4360,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "20135:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4361,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dgxRewardsPoolLastQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1657,
                        "src": "20135:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4366,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "20218:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4367,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dgxRewardsPoolLastQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1657,
                            "src": "20218:30:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4362,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4290,
                                "src": "20179:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4363,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "qInfo",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1663,
                              "src": "20179:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                              }
                            },
                            "id": 4364,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sumRewardsFromBeginning",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8440,
                            "src": "20179:34:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25610,
                          "src": "20179:38:12",
                          "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": 4368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20179:70:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4329,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "19511:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4330,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19511:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateQuarterInfo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14707,
                      "src": "19511:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) external"
                      }
                    },
                    "id": 4369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19511:748:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4370,
                  "nodeType": "ExpressionStatement",
                  "src": "19511:748:12"
                }
              ]
            },
            "documentation": null,
            "id": 4372,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "processGlobalRewardsUpdate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4290,
                  "name": "info",
                  "nodeType": "VariableDeclaration",
                  "scope": 4372,
                  "src": "19002:30:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                    "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4289,
                    "name": "QuarterRewardsInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1673,
                    "src": "19002:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_storage_ptr",
                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19001:32:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4292,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19043:0:12"
            },
            "scope": 4666,
            "src": "18966:1300:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4664,
              "nodeType": "Block",
              "src": "20728:3712:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4385,
                      "name": "_operations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4378,
                      "src": "20742:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4386,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20757:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "20742:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4390,
                  "nodeType": "IfStatement",
                  "src": "20738:40:12",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4388,
                      "name": "_operations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4378,
                      "src": "20767:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 4384,
                    "id": 4389,
                    "nodeType": "Return",
                    "src": "20760:18:12"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4391,
                        "name": "_interResults",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4380,
                        "src": "20826:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      },
                      "id": 4392,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "countedUntil",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8449,
                      "src": "20826:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4393,
                      "name": "EMPTY_ADDRESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1298,
                      "src": "20856:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "20826:43:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4453,
                    "nodeType": "Block",
                    "src": "21269:556:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4415,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "21283:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4417,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "users",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1668,
                            "src": "21283:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "id": 4418,
                              "name": "_badgeCalculation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4376,
                              "src": "21296:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4430,
                                    "name": "_interResults",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4380,
                                    "src": "21477:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                                      "typeString": "struct DaoStructs.IntermediateResults memory"
                                    }
                                  },
                                  "id": 4431,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "countedUntil",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8449,
                                  "src": "21477:26:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4432,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21505:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4433,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21518:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4427,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21436:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4428,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21436:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listParticipantsFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12276,
                                "src": "21436:40:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (address,uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21436:87:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "21296:227:12",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4422,
                                    "name": "_interResults",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4380,
                                    "src": "21371:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                                      "typeString": "struct DaoStructs.IntermediateResults memory"
                                    }
                                  },
                                  "id": 4423,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "countedUntil",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8449,
                                  "src": "21371:26:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4424,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21399:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21412:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4419,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21332:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21332:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listModeratorsFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12213,
                                "src": "21332:38:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (address,uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21332:85:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "21283:240:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 4437,
                        "nodeType": "ExpressionStatement",
                        "src": "21283:240:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4438,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4374,
                                "src": "21679:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4439,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "users",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1668,
                              "src": "21679:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "21679:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4441,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21700:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21679:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4452,
                        "nodeType": "IfStatement",
                        "src": "21675:140:12",
                        "trueBody": {
                          "id": 4451,
                          "nodeType": "Block",
                          "src": "21703:112:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4443,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4374,
                                    "src": "21721:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                    }
                                  },
                                  "id": 4445,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "doneCalculatingEffectiveBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1670,
                                  "src": "21721:36:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21760:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "21721:43:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4448,
                              "nodeType": "ExpressionStatement",
                              "src": "21721:43:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4449,
                                "name": "_operations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4378,
                                "src": "21789:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 4384,
                              "id": 4450,
                              "nodeType": "Return",
                              "src": "21782:18:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 4454,
                  "nodeType": "IfStatement",
                  "src": "20822:1003:12",
                  "trueBody": {
                    "id": 4414,
                    "nodeType": "Block",
                    "src": "20871:392:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4395,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "21076:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4397,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "users",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1668,
                            "src": "21076:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "id": 4398,
                              "name": "_badgeCalculation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4376,
                              "src": "21089:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4408,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21234:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4409,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21247:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4405,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21197:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4406,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21197:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listParticipants",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12243,
                                "src": "21197:36:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21197:55:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "21089:163:12",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4402,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21160:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21173:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4399,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21125:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21125:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listModerators",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12180,
                                "src": "21125:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21125:53:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "21076:176:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 4413,
                        "nodeType": "ExpressionStatement",
                        "src": "21076:176:12"
                      }
                    ]
                  }
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4456,
                      "name": "_lastAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 4665,
                      "src": "21835:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4455,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "21835:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4457,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21835:20:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4458,
                      "name": "_lastAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4456,
                      "src": "21865:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4459,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "21880:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4460,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "users",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1668,
                        "src": "21880:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4466,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4461,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "21891:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4462,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "users",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1668,
                            "src": "21891:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 4463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "21891:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 4464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21911:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "21891:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "21880:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "21865:48:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4468,
                  "nodeType": "ExpressionStatement",
                  "src": "21865:48:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4469,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4374,
                        "src": "21924:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4471,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1659,
                      "src": "21924:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4472,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "21941:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4473,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "users",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1668,
                        "src": "21941:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21941:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21924:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4476,
                  "nodeType": "ExpressionStatement",
                  "src": "21924:34:12"
                },
                {
                  "body": {
                    "id": 4602,
                    "nodeType": "Block",
                    "src": "22014:1589:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4492,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "22028:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4494,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentUser",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1665,
                            "src": "22028:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4495,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4374,
                                "src": "22047:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4496,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "users",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1668,
                              "src": "22047:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4499,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4497,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4374,
                                "src": "22058:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4498,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1661,
                              "src": "22058:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22047:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "22028:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4501,
                        "nodeType": "ExpressionStatement",
                        "src": "22028:37:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4505,
                                  "name": "info",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4374,
                                  "src": "22215:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                    "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                  }
                                },
                                "id": 4506,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "currentUser",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1665,
                                "src": "22215:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4502,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "22171:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 4503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22171:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 4504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastParticipatedQuarter",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14571,
                              "src": "22171:43:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 4507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22171:61:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4508,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "22236:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4509,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "previousQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1651,
                            "src": "22236:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22171:85:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4513,
                        "nodeType": "IfStatement",
                        "src": "22167:132:12",
                        "trueBody": {
                          "id": 4512,
                          "nodeType": "Block",
                          "src": "22258:41:12",
                          "statements": [
                            {
                              "id": 4511,
                              "nodeType": "Continue",
                              "src": "22276:8:12"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4514,
                          "name": "_badgeCalculation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4376,
                          "src": "22316:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4600,
                          "nodeType": "Block",
                          "src": "22990:603:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4558,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4374,
                                    "src": "23008:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                    }
                                  },
                                  "id": 4560,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "totalEffectiveDGDPreviousQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1653,
                                  "src": "23008:37:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4567,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "23164:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4568,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "23164:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4569,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "minimalParticipationPoint",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8420,
                                          "src": "23164:36:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4570,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "23222:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4571,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "23222:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4572,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "quarterPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8422,
                                          "src": "23222:36:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4573,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "23280:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4574,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "23280:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4575,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "reputationPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8424,
                                          "src": "23280:39:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4579,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23376:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4580,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "23376:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4581,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23394:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4582,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "previousQuarter",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1651,
                                              "src": "23394:20:12",
                                              "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": 4576,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "23341:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4577,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23341:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4578,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getQuarterPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14278,
                                            "src": "23341:34:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (address,uint256) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4583,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23341:74:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4587,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23470:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4588,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "23470:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4584,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "23437:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4585,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23437:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4586,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getReputation",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14484,
                                            "src": "23437:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4589,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23437:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4593,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23542:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4594,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "23542:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4590,
                                                "name": "daoStakeStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1167,
                                                "src": "23509:15:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                                }
                                              },
                                              "id": 4591,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23509:17:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                                "typeString": "contract DaoStakeStorage"
                                              }
                                            },
                                            "id": 4592,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lockedDGDStake",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 15618,
                                            "src": "23509:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4595,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23509:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 4564,
                                            "name": "daoCalculatorService",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3572,
                                            "src": "23090:20:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                              "typeString": "function () view returns (contract DaoCalculatorService)"
                                            }
                                          },
                                          "id": 4565,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23090:22:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                            "typeString": "contract DaoCalculatorService"
                                          }
                                        },
                                        "id": 4566,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "calculateUserEffectiveBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12071,
                                        "src": "23090:52:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure external returns (uint256)"
                                        }
                                      },
                                      "id": 4596,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "23090:487:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4561,
                                        "name": "info",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4374,
                                        "src": "23048:4:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                        }
                                      },
                                      "id": 4562,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "totalEffectiveDGDPreviousQuarter",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1653,
                                      "src": "23048:37:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4563,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25610,
                                    "src": "23048:41:12",
                                    "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": 4597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23048:530:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23008:570:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4599,
                              "nodeType": "ExpressionStatement",
                              "src": "23008:570:12"
                            }
                          ]
                        },
                        "id": 4601,
                        "nodeType": "IfStatement",
                        "src": "22312:1281:12",
                        "trueBody": {
                          "id": 4557,
                          "nodeType": "Block",
                          "src": "22335:649:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4515,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4374,
                                    "src": "22353:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                    }
                                  },
                                  "id": 4517,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "totalEffectiveModeratorDGDLastQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1655,
                                  "src": "22353:42:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4524,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "22519:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4525,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "22519:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4526,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "moderatorMinimalParticipationPoint",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8428,
                                          "src": "22519:45:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4527,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "22586:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4528,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "22586:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4529,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "moderatorQuarterPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8430,
                                          "src": "22586:45:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4530,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "22653:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4531,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "22653:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4532,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "moderatorReputationPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8432,
                                          "src": "22653:48:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4536,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22767:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4537,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "22767:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4538,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22785:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4539,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "previousQuarter",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1651,
                                              "src": "22785:20:12",
                                              "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": 4533,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "22723:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4534,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22723:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4535,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getQuarterModeratorPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14297,
                                            "src": "22723:43:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (address,uint256) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4540,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22723:83:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4544,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22861:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4545,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "22861:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4541,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "22828:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4542,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22828:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4543,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getReputation",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14484,
                                            "src": "22828:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4546,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22828:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4550,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22933:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4551,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "22933:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4547,
                                                "name": "daoStakeStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1167,
                                                "src": "22900:15:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                                }
                                              },
                                              "id": 4548,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22900:17:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                                "typeString": "contract DaoStakeStorage"
                                              }
                                            },
                                            "id": 4549,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lockedDGDStake",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 15618,
                                            "src": "22900:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4552,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22900:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 4521,
                                            "name": "daoCalculatorService",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3572,
                                            "src": "22445:20:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                              "typeString": "function () view returns (contract DaoCalculatorService)"
                                            }
                                          },
                                          "id": 4522,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22445:22:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                            "typeString": "contract DaoCalculatorService"
                                          }
                                        },
                                        "id": 4523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "calculateUserEffectiveBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12071,
                                        "src": "22445:52:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure external returns (uint256)"
                                        }
                                      },
                                      "id": 4553,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22445:523:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4518,
                                        "name": "info",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4374,
                                        "src": "22398:4:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                        }
                                      },
                                      "id": 4519,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "totalEffectiveModeratorDGDLastQuarter",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1655,
                                      "src": "22398:42:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25610,
                                    "src": "22398:46:12",
                                    "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": 4554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22398:571:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22353:616:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4556,
                              "nodeType": "ExpressionStatement",
                              "src": "22353:616:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4483,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4374,
                        "src": "21982:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4484,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "i",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1661,
                      "src": "21982:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4485,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4374,
                        "src": "21989:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4486,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1659,
                      "src": "21989:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21982:21:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4603,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4477,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "21973:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4479,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "i",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1661,
                        "src": "21973:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "21980:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "21973:8:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4482,
                    "nodeType": "ExpressionStatement",
                    "src": "21973:8:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "22004:8:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4488,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "22004:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4489,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "i",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1661,
                        "src": "22004:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4491,
                    "nodeType": "ExpressionStatement",
                    "src": "22004:8:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "21968:1635:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4604,
                        "name": "_lastAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4456,
                        "src": "23686:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4605,
                              "name": "daoStakeStorage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1167,
                              "src": "23702:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                "typeString": "function () view returns (contract DaoStakeStorage)"
                              }
                            },
                            "id": 4606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23702:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                              "typeString": "contract DaoStakeStorage"
                            }
                          },
                          "id": 4607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "readLastModerator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15917,
                          "src": "23702:35:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 4608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23702:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "23686:53:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4610,
                      "name": "_badgeCalculation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4376,
                      "src": "23743:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "23686:74:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4619,
                  "nodeType": "IfStatement",
                  "src": "23682:157:12",
                  "trueBody": {
                    "id": 4618,
                    "nodeType": "Block",
                    "src": "23762:77:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4612,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "23776:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4614,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "doneCalculatingModeratorEffectiveBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1672,
                            "src": "23776:45:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23824:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "23776:52:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4617,
                        "nodeType": "ExpressionStatement",
                        "src": "23776:52:12"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4620,
                        "name": "_lastAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4456,
                        "src": "23852:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4621,
                              "name": "daoStakeStorage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1167,
                              "src": "23868:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                "typeString": "function () view returns (contract DaoStakeStorage)"
                              }
                            },
                            "id": 4622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23868:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                              "typeString": "contract DaoStakeStorage"
                            }
                          },
                          "id": 4623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "readLastParticipant",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15983,
                          "src": "23868:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 4624,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23868:39:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "23852:55:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "23911:18:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4626,
                        "name": "_badgeCalculation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4376,
                        "src": "23912:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "23852:77:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4636,
                  "nodeType": "IfStatement",
                  "src": "23848:151:12",
                  "trueBody": {
                    "id": 4635,
                    "nodeType": "Block",
                    "src": "23931:68:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4629,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "23945:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4631,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "doneCalculatingEffectiveBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1670,
                            "src": "23945:36:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23984:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "23945:43:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4634,
                        "nodeType": "ExpressionStatement",
                        "src": "23945:43:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4641,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "24164:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4642,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "previousQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1651,
                            "src": "24164:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4643,
                            "name": "_badgeCalculation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4376,
                            "src": "24186:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4640,
                          "name": "getIntermediateResultsIdForGlobalRewards",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4288,
                          "src": "24123:40:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bool_$returns$_t_bytes32_$",
                            "typeString": "function (uint256,bool) view returns (bytes32)"
                          }
                        },
                        "id": 4644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24123:81:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4645,
                        "name": "_lastAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4456,
                        "src": "24218:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24244:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24246:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 4648,
                          "name": "_badgeCalculation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4376,
                          "src": "24261:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4651,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4374,
                            "src": "24326:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalEffectiveDGDPreviousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1653,
                          "src": "24326:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "24261:102:12",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4649,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4374,
                            "src": "24281:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4650,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalEffectiveModeratorDGDLastQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1655,
                          "src": "24281:42:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4637,
                          "name": "intermediateResultsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1265,
                          "src": "24058:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IntermediateResultsStorage_$18157_$",
                            "typeString": "function () view returns (contract IntermediateResultsStorage)"
                          }
                        },
                        "id": 4638,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24058:28:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IntermediateResultsStorage_$18157",
                          "typeString": "contract IntermediateResultsStorage"
                        }
                      },
                      "id": 4639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setIntermediateResults",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18156,
                      "src": "24058:51:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,uint256,uint256) external"
                      }
                    },
                    "id": 4654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24058:315:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4655,
                  "nodeType": "ExpressionStatement",
                  "src": "24058:315:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4656,
                      "name": "_operationsLeft",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4383,
                      "src": "24384:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4659,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4374,
                            "src": "24418:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4660,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userCount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1659,
                          "src": "24418:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4657,
                          "name": "_operations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4378,
                          "src": "24402:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "24402:15:12",
                        "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": 4661,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24402:31:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24384:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4663,
                  "nodeType": "ExpressionStatement",
                  "src": "24384:49:12"
                }
              ]
            },
            "documentation": null,
            "id": 4665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "sumEffectiveBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4374,
                  "name": "info",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20445:30:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                    "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4373,
                    "name": "QuarterRewardsInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1673,
                    "src": "20445:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_storage_ptr",
                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4376,
                  "name": "_badgeCalculation",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20485:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4375,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20485:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4378,
                  "name": "_operations",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20581:19:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4377,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20581:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4380,
                  "name": "_interResults",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20610:51:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                    "typeString": "struct DaoStructs.IntermediateResults"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4379,
                    "name": "DaoStructs.IntermediateResults",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8450,
                    "src": "20610:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IntermediateResults_$8450_storage_ptr",
                      "typeString": "struct DaoStructs.IntermediateResults"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20435:232:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4383,
                  "name": "_operationsLeft",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20702:20:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4382,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20702:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20701:22:12"
            },
            "scope": 4666,
            "src": "20406:4034:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 4667,
        "src": "390:24052:12"
      }
    ],
    "src": "0:24443:12"
  },
  "legacyAST": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoRewardsManager.sol",
    "exportedSymbols": {
      "DaoRewardsManager": [
        4666
      ]
    },
    "id": 4667,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3535,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:12"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 3536,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 18629,
        "src": "26:64:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoRewardsManagerCommon.sol",
        "file": "../common/DaoRewardsManagerCommon.sol",
        "id": 3537,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 1769,
        "src": "91:47:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/lib/DaoStructs.sol",
        "file": "../lib/DaoStructs.sol",
        "id": 3538,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 8452,
        "src": "139:31:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/service/DaoCalculatorService.sol",
        "file": "../service/DaoCalculatorService.sol",
        "id": 3539,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 12094,
        "src": "171:45:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "id": 3540,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 25889,
        "src": "217:63:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoRewardsManagerExtras.sol",
        "file": "./DaoRewardsManagerExtras.sol",
        "id": 3541,
        "nodeType": "ImportDirective",
        "scope": 4667,
        "sourceUnit": 4892,
        "src": "281:39:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3542,
              "name": "DaoRewardsManagerCommon",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1768,
              "src": "420:23:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoRewardsManagerCommon_$1768",
                "typeString": "contract DaoRewardsManagerCommon"
              }
            },
            "id": 3543,
            "nodeType": "InheritanceSpecifier",
            "src": "420:23:12"
          }
        ],
        "contractDependencies": [
          1282,
          1629,
          1768,
          1868,
          1960,
          18628
        ],
        "contractKind": "contract",
        "documentation": "@title Contract to manage DGX rewards\n@author Digix Holdings",
        "fullyImplemented": true,
        "id": 4666,
        "linearizedBaseContracts": [
          4666,
          1768,
          1282,
          1960,
          1868,
          1629,
          18628
        ],
        "name": "DaoRewardsManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3546,
            "libraryName": {
              "contractScope": null,
              "id": 3544,
              "name": "MathHelper",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8535,
              "src": "456:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MathHelper_$8535",
                "typeString": "library MathHelper"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "450:32:12",
            "typeName": {
              "contractScope": null,
              "id": 3545,
              "name": "MathHelper",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8535,
              "src": "471:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MathHelper_$8535",
                "typeString": "library MathHelper"
              }
            }
          },
          {
            "id": 3549,
            "libraryName": {
              "contractScope": null,
              "id": 3547,
              "name": "DaoStructs",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8451,
              "src": "493:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoStructs_$8451",
                "typeString": "library DaoStructs"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "487:47:12",
            "typeName": {
              "contractScope": null,
              "id": 3548,
              "name": "DaoStructs.DaoQuarterInfo",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8441,
              "src": "508:25:12",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_storage_ptr",
                "typeString": "struct DaoStructs.DaoQuarterInfo"
              }
            }
          },
          {
            "id": 3552,
            "libraryName": {
              "contractScope": null,
              "id": 3550,
              "name": "DaoStructs",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8451,
              "src": "545:10:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoStructs_$8451",
                "typeString": "library DaoStructs"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "539:52:12",
            "typeName": {
              "contractScope": null,
              "id": 3551,
              "name": "DaoStructs.IntermediateResults",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8450,
              "src": "560:30:12",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_IntermediateResults_$8450_storage_ptr",
                "typeString": "struct DaoStructs.IntermediateResults"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3556,
            "name": "StartNewQuarter",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3554,
                  "indexed": true,
                  "name": "_quarterNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 3556,
                  "src": "789:30:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "789:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "788:32:12"
            },
            "src": "767:54:12"
          },
          {
            "constant": false,
            "id": 3558,
            "name": "ADDRESS_DGX_TOKEN",
            "nodeType": "VariableDeclaration",
            "scope": 4666,
            "src": "827:32:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3557,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "827:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3571,
              "nodeType": "Block",
              "src": "981:96:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3563,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3561,
                      "src": "991:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3566,
                              "name": "CONTRACT_SERVICE_DAO_CALCULATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1394,
                              "src": "1037:31:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3565,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "1024:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 3567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1024:45:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3564,
                        "name": "DaoCalculatorService",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12093,
                        "src": "1003:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoCalculatorService_$12093_$",
                          "typeString": "type(contract DaoCalculatorService)"
                        }
                      },
                      "id": 3568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1003:67:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                        "typeString": "contract DaoCalculatorService"
                      }
                    },
                    "src": "991:79:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "id": 3570,
                  "nodeType": "ExpressionStatement",
                  "src": "991:79:12"
                }
              ]
            },
            "documentation": null,
            "id": 3572,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoCalculatorService",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "895:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3561,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "945:30:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                    "typeString": "contract DaoCalculatorService"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3560,
                    "name": "DaoCalculatorService",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12093,
                    "src": "945:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                      "typeString": "contract DaoCalculatorService"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "944:32:12"
            },
            "scope": 4666,
            "src": "866:211:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3585,
              "nodeType": "Block",
              "src": "1204:103:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3577,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3575,
                      "src": "1214:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                        "typeString": "contract DaoRewardsManagerExtras"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3580,
                              "name": "CONTRACT_DAO_REWARDS_MANAGER_EXTRAS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1370,
                              "src": "1263:35:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3579,
                            "name": "get_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18627,
                            "src": "1250:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 3581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1250:49:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3578,
                        "name": "DaoRewardsManagerExtras",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4891,
                        "src": "1226:23:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DaoRewardsManagerExtras_$4891_$",
                          "typeString": "type(contract DaoRewardsManagerExtras)"
                        }
                      },
                      "id": 3582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1226:74:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                        "typeString": "contract DaoRewardsManagerExtras"
                      }
                    },
                    "src": "1214:86:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                      "typeString": "contract DaoRewardsManagerExtras"
                    }
                  },
                  "id": 3584,
                  "nodeType": "ExpressionStatement",
                  "src": "1214:86:12"
                }
              ]
            },
            "documentation": null,
            "id": 3586,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "daoRewardsManagerExtras",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1115:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3575,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 3586,
                  "src": "1165:33:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                    "typeString": "contract DaoRewardsManagerExtras"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3574,
                    "name": "DaoRewardsManagerExtras",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4891,
                    "src": "1165:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                      "typeString": "contract DaoRewardsManagerExtras"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1164:35:12"
            },
            "scope": 4666,
            "src": "1083:224:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3633,
              "nodeType": "Block",
              "src": "1604:1357:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3595,
                            "name": "CONTRACT_DAO_REWARDS_MANAGER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1367,
                            "src": "1627:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3596,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3588,
                            "src": "1657:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3594,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "1622:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 3597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1622:45:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3593,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1614:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1614:54:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3599,
                  "nodeType": "ExpressionStatement",
                  "src": "1614:54:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3600,
                      "name": "ADDRESS_DGX_TOKEN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3558,
                      "src": "1678:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3601,
                      "name": "_dgxAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3590,
                      "src": "1698:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1678:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3603,
                  "nodeType": "ExpressionStatement",
                  "src": "1678:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1827:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3609,
                            "name": "CONFIG_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "1856:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3608,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "1842:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1842:43:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3612,
                            "name": "CONFIG_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1526,
                            "src": "1913:35:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3611,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "1899:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1899:50:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3615,
                            "name": "CONFIG_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1529,
                            "src": "1977:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3614,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "1963:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1963:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2030:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3619,
                            "name": "CONFIG_MODERATOR_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1532,
                            "src": "2147:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3618,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "2133:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2133:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3622,
                            "name": "CONFIG_MODERATOR_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1535,
                            "src": "2214:45:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3621,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "2200:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3623,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2200:60:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3625,
                            "name": "CONFIG_MODERATOR_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1538,
                            "src": "2288:48:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3624,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "2274:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 3626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2274:63:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2351:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3628,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26184,
                        "src": "2789:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2807:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2904:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3604,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "1776:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1776:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateQuarterInfo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14707,
                      "src": "1776:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) external"
                      }
                    },
                    "id": 3631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1776:1178:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3632,
                  "nodeType": "ExpressionStatement",
                  "src": "1776:1178:12"
                }
              ]
            },
            "documentation": "@notice Constructor (set the DaoQuarterInfo struct for the first quarter)\n@param _resolver Address of the Contract Resolver contract\n@param _dgxAddress Address of the Digix Gold Token contract",
            "id": 3634,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3588,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 3634,
                  "src": "1545:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1545:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3590,
                  "name": "_dgxAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3634,
                  "src": "1564:19:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3589,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1564:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1544:40:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1604:0:12"
            },
            "scope": 4666,
            "src": "1533:1428:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3664,
              "nodeType": "Block",
              "src": "3277:209:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3641,
                            "name": "CONTRACT_DAO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1346,
                            "src": "3305:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3640,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3295:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 3642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3295:23:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3639,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3287:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3287:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3644,
                  "nodeType": "ExpressionStatement",
                  "src": "3287:32:12"
                },
                {
                  "assignments": [
                    3646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3646,
                      "name": "_dgxBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 3665,
                      "src": "3329:19:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3645,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3329:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3655,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3652,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26279,
                            "src": "3394:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                              "typeString": "contract DaoRewardsManager"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                              "typeString": "contract DaoRewardsManager"
                            }
                          ],
                          "id": 3651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3386:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3386:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3648,
                            "name": "ADDRESS_DGX_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "3357:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3647,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25888,
                          "src": "3351:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 3649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3351:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$25888",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 3650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25902,
                      "src": "3351:34:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 3654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3351:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3329:71:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3660,
                        "name": "_newDaoRewardsManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3636,
                        "src": "3444:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3661,
                        "name": "_dgxBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3646,
                        "src": "3467:11:12",
                        "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": 3657,
                            "name": "ADDRESS_DGX_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "3416:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3656,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25888,
                          "src": "3410:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 3658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3410:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$25888",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 3659,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25911,
                      "src": "3410:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 3662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3410:69:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3663,
                  "nodeType": "ExpressionStatement",
                  "src": "3410:69:12"
                }
              ]
            },
            "documentation": "@notice Function to transfer the claimableDGXs to the new DaoRewardsManager\n@dev This is done during the migrateToNewDao procedure\n@param _newDaoRewardsManager Address of the new daoRewardsManager contract",
            "id": 3665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "moveDGXsToNewDao",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3636,
                  "name": "_newDaoRewardsManager",
                  "nodeType": "VariableDeclaration",
                  "scope": 3665,
                  "src": "3227:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3227:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3226:31:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3638,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3277:0:12"
            },
            "scope": 4666,
            "src": "3201:285:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3746,
              "nodeType": "Block",
              "src": "3963:1675:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3673,
                          "name": "isDaoNotReplaced",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 918,
                          "src": "3981:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 3674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3981:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3672,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3973:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3973:27:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3676,
                  "nodeType": "ExpressionStatement",
                  "src": "3973:27:12"
                },
                {
                  "assignments": [
                    3678
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3678,
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "scope": 3747,
                      "src": "4011:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3677,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4011:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3681,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3679,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26182,
                      "src": "4027:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 3680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4027:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4011:26:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3683,
                      "name": "_claimableDGX",
                      "nodeType": "VariableDeclaration",
                      "scope": 3747,
                      "src": "4047:21:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3682,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4047:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3684,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4047:21:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 3685,
                          "name": "_claimableDGX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3683,
                          "src": "4153:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3686,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "4150:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_uint256_$",
                        "typeString": "tuple(,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3688,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3678,
                          "src": "4215:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3687,
                        "name": "updateUserRewardsForLastParticipatingQuarter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4114,
                        "src": "4170:44:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$_t_uint256_$",
                          "typeString": "function (address) returns (bool,uint256)"
                        }
                      },
                      "id": 3689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4170:51:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(bool,uint256)"
                      }
                    },
                    "src": "4150:71:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3691,
                  "nodeType": "ExpressionStatement",
                  "src": "4150:71:12"
                },
                {
                  "assignments": [
                    3693
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3693,
                      "name": "_days_elapsed",
                      "nodeType": "VariableDeclaration",
                      "scope": 3747,
                      "src": "4515:21:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3692,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4515:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3712,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4843:6:12",
                        "subdenomination": "days",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 3705,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4705:1:12",
                                    "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": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3702,
                                        "name": "_user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3678,
                                        "src": "4694:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 3699,
                                          "name": "daoRewardsStorage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1251,
                                          "src": "4641:17:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                                          }
                                        },
                                        "id": 3700,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4641:19:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                          "typeString": "contract DaoRewardsStorage"
                                        }
                                      },
                                      "id": 3701,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lastQuarterThatRewardsWasUpdated",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14579,
                                      "src": "4641:52:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 3703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4641:59:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25610,
                                  "src": "4641:63:12",
                                  "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": 3706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4641:66:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3696,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "4577:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 3697,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4577:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 3698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "readDgxDistributionDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15069,
                              "src": "4577:42:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 3707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4577:234:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3694,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26184,
                            "src": "4539:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "4539:20:12",
                          "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": 3708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4539:286:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3709,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25566,
                      "src": "4539:303:12",
                      "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": 3711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4539:311:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4515:335:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3716,
                        "name": "_claimableDGX",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3683,
                        "src": "5122:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3713,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "5081:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5081:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addToTotalDgxClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14832,
                      "src": "5081:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 3717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5081:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3718,
                  "nodeType": "ExpressionStatement",
                  "src": "5081:55:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3719,
                      "name": "_claimableDGX",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3683,
                      "src": "5147:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3725,
                              "name": "_claimableDGX",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3683,
                              "src": "5253:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3726,
                              "name": "_days_elapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3693,
                              "src": "5284:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3722,
                                "name": "daoCalculatorService",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3572,
                                "src": "5194:20:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                  "typeString": "function () view returns (contract DaoCalculatorService)"
                                }
                              },
                              "id": 3723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5194:22:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                "typeString": "contract DaoCalculatorService"
                              }
                            },
                            "id": 3724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "calculateDemurrage",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12092,
                            "src": "5194:41:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 3727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5194:117:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3720,
                          "name": "_claimableDGX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3683,
                          "src": "5163:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "5163:17:12",
                        "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": 3728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5163:149:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5147:165:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3730,
                  "nodeType": "ExpressionStatement",
                  "src": "5147:165:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3734,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3678,
                        "src": "5362:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5369:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3731,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "5323:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5323:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateClaimableDGX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14727,
                      "src": "5323:38:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 3736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5323:48:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3737,
                  "nodeType": "ExpressionStatement",
                  "src": "5323:48:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3742,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3678,
                        "src": "5415:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3743,
                        "name": "_claimableDGX",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3683,
                        "src": "5422:13:12",
                        "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": 3739,
                            "name": "ADDRESS_DGX_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "5387:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3738,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25888,
                          "src": "5381:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 3740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5381:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$25888",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 3741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25911,
                      "src": "5381:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 3744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5381:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3745,
                  "nodeType": "ExpressionStatement",
                  "src": "5381:55:12"
                }
              ]
            },
            "documentation": "@notice Function for users to claim the claimable DGX rewards\n@dev Will revert if _claimableDGX < MINIMUM_TRANSFER_AMOUNT of DGX.\nCan only be called after calculateGlobalRewardsBeforeNewQuarter() has been called in the current quarter\nThis cannot be called once the current version of Dao contracts have been migrated to newer version",
            "id": 3747,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3668,
                      "name": "currentQuarterNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1021,
                      "src": "3935:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 3669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3935:22:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3670,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3667,
                  "name": "ifGlobalRewardsSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 972,
                  "src": "3916:18:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3916:42:12"
              }
            ],
            "name": "claimRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3890:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3963:0:12"
            },
            "scope": 4666,
            "src": "3869:1769:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3766,
              "nodeType": "Block",
              "src": "5943:182:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3754,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "5971:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3753,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "5961:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5961:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3752,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "5953:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5953:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3757,
                  "nodeType": "ExpressionStatement",
                  "src": "5953:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3759,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3749,
                        "src": "6055:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3758,
                      "name": "updateUserRewardsForLastParticipatingQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4114,
                      "src": "6010:44:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (address) returns (bool,uint256)"
                      }
                    },
                    "id": 3760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6010:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3761,
                  "nodeType": "ExpressionStatement",
                  "src": "6010:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3763,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3749,
                        "src": "6112:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3762,
                      "name": "updateUserReputationUntilPreviousQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3910,
                      "src": "6071:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 3764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6071:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3765,
                  "nodeType": "ExpressionStatement",
                  "src": "6071:47:12"
                }
              ]
            },
            "documentation": "@notice Function to update DGX rewards of user. This is only called during locking/withdrawing DGDs, or continuing participation for new quarter\n@param _user Address of the DAO participant",
            "id": 3767,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateRewardsAndReputationBeforeNewQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3749,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3767,
                  "src": "5909:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3748,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5909:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5908:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5943:0:12"
            },
            "scope": 4666,
            "src": "5857:268:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3909,
              "nodeType": "Block",
              "src": "7006:3352:12",
              "statements": [
                {
                  "assignments": [
                    3773
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3773,
                      "name": "_lastParticipatedQuarter",
                      "nodeType": "VariableDeclaration",
                      "scope": 3910,
                      "src": "7016:32:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3772,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7016:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3779,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3777,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3769,
                        "src": "7095:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3774,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "7051:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7051:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3776,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastParticipatedQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14571,
                      "src": "7051:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 3778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7051:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7016:85:12"
                },
                {
                  "assignments": [
                    3781
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3781,
                      "name": "_lastQuarterThatReputationWasUpdated",
                      "nodeType": "VariableDeclaration",
                      "scope": 3910,
                      "src": "7111:44:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3780,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7111:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3787,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3785,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3769,
                        "src": "7214:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3782,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "7158:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7158:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastQuarterThatReputationWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14583,
                      "src": "7158:55:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 3786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7158:62:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7111:109:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3789,
                      "name": "_reputationDeduction",
                      "nodeType": "VariableDeclaration",
                      "scope": 3910,
                      "src": "7230:28:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3788,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7230:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3790,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7230:28:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7439:1:12",
                          "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,
                          "id": 3791,
                          "name": "_lastQuarterThatReputationWasUpdated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3781,
                          "src": "7398:36:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "7398:40:12",
                        "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": 3794,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7398:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3795,
                        "name": "currentQuarterNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1021,
                        "src": "7445:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 3796,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7445:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7398:69:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3800,
                  "nodeType": "IfStatement",
                  "src": "7381:128:12",
                  "trueBody": {
                    "id": 3799,
                    "nodeType": "Block",
                    "src": "7478:31:12",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 3771,
                        "id": 3798,
                        "nodeType": "Return",
                        "src": "7492:7:12"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7895:1:12",
                              "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,
                              "id": 3801,
                              "name": "_lastQuarterThatReputationWasUpdated",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3781,
                              "src": "7854:36:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "7854:40:12",
                            "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": 3804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7854:43:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3805,
                          "name": "_lastParticipatedQuarter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3773,
                          "src": "7901:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7854:71:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3807,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7853:73:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3864,
                  "nodeType": "IfStatement",
                  "src": "7836:1479:12",
                  "trueBody": {
                    "id": 3863,
                    "nodeType": "Block",
                    "src": "7937:1378:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3809,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3769,
                              "src": "7983:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3813,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3769,
                                  "src": "8041:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3814,
                                  "name": "_lastParticipatedQuarter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3773,
                                  "src": "8048:24:12",
                                  "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": 3810,
                                    "name": "daoPointsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1237,
                                    "src": "8006:16:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                      "typeString": "function () view returns (contract DaoPointsStorage)"
                                    }
                                  },
                                  "id": 3811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8006:18:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                    "typeString": "contract DaoPointsStorage"
                                  }
                                },
                                "id": 3812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getQuarterPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14278,
                                "src": "8006:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256) view external returns (uint256)"
                                }
                              },
                              "id": 3815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8006:67:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3817,
                                  "name": "CONFIG_MINIMAL_QUARTER_POINT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1523,
                                  "src": "8105:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3816,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8091:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8091:43:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3820,
                                  "name": "CONFIG_MAXIMUM_REPUTATION_DEDUCTION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1577,
                                  "src": "8166:35:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3819,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8152:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8152:50:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3823,
                                  "name": "CONFIG_REPUTATION_PER_EXTRA_QP_NUM",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1583,
                                  "src": "8234:34:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3822,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8220:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8220:49:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3826,
                                  "name": "CONFIG_REPUTATION_PER_EXTRA_QP_DEN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1586,
                                  "src": "8301:34:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3825,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "8287:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8287:49:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3808,
                            "name": "updateRPfromQP",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3978,
                            "src": "7951:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 3828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7951:399:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3829,
                        "nodeType": "ExpressionStatement",
                        "src": "7951:399:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3833,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3769,
                              "src": "8711:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3830,
                                "name": "daoStakeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "8674:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                }
                              },
                              "id": 3831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8674:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                "typeString": "contract DaoStakeStorage"
                              }
                            },
                            "id": 3832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isInModeratorsList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15893,
                            "src": "8674:36:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view external returns (bool)"
                            }
                          },
                          "id": 3834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8674:43:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3858,
                        "nodeType": "IfStatement",
                        "src": "8670:558:12",
                        "trueBody": {
                          "id": 3857,
                          "nodeType": "Block",
                          "src": "8719:509:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3836,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3769,
                                    "src": "8773:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3840,
                                        "name": "_user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3769,
                                        "src": "8844:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3841,
                                        "name": "_lastParticipatedQuarter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3773,
                                        "src": "8851:24:12",
                                        "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": 3837,
                                          "name": "daoPointsStorage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1237,
                                          "src": "8800:16:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                            "typeString": "function () view returns (contract DaoPointsStorage)"
                                          }
                                        },
                                        "id": 3838,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8800:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                          "typeString": "contract DaoPointsStorage"
                                        }
                                      },
                                      "id": 3839,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getQuarterModeratorPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14297,
                                      "src": "8800:43:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (address,uint256) view external returns (uint256)"
                                      }
                                    },
                                    "id": 3842,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8800:76:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3844,
                                        "name": "CONFIG_MODERATOR_MINIMAL_QUARTER_POINT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1532,
                                        "src": "8912:38:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3843,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "8898:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8898:53:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3847,
                                        "name": "CONFIG_MAXIMUM_MODERATOR_REPUTATION_DEDUCTION",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1589,
                                        "src": "8987:45:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3846,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "8973:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3848,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8973:60:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3850,
                                        "name": "CONFIG_REPUTATION_PER_EXTRA_MODERATOR_QP_NUM",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1592,
                                        "src": "9069:44:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3849,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "9055:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3851,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9055:59:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3853,
                                        "name": "CONFIG_REPUTATION_PER_EXTRA_MODERATOR_QP_DEN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1595,
                                        "src": "9150:44:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3852,
                                      "name": "getUintConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1281,
                                      "src": "9136:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                        "typeString": "function (bytes32) view returns (uint256)"
                                      }
                                    },
                                    "id": 3854,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9136:59:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3835,
                                  "name": "updateRPfromQP",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3978,
                                  "src": "8737:14:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 3855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8737:476:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3856,
                              "nodeType": "ExpressionStatement",
                              "src": "8737:476:12"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3859,
                            "name": "_lastQuarterThatReputationWasUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3781,
                            "src": "9241:36:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3860,
                            "name": "_lastParticipatedQuarter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3773,
                            "src": "9280:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9241:63:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3862,
                        "nodeType": "ExpressionStatement",
                        "src": "9241:63:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3885,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3865,
                      "name": "_reputationDeduction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3789,
                      "src": "9859:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3881,
                                  "name": "CONFIG_PUNISHMENT_FOR_NOT_LOCKING",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1580,
                                  "src": "10088:33:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3880,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "10074:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10074:48:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3877,
                                  "name": "CONFIG_MAXIMUM_REPUTATION_DEDUCTION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1577,
                                  "src": "10016:35:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3876,
                                "name": "getUintConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1281,
                                "src": "10002:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view returns (uint256)"
                                }
                              },
                              "id": 3878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10002:50:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "10002:71:12",
                            "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": 3883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10002:121:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3872,
                                  "name": "_lastQuarterThatReputationWasUpdated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3781,
                                  "src": "9929:36:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3869,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9922:1:12",
                                      "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": 3866,
                                        "name": "currentQuarterNumber",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1021,
                                        "src": "9895:20:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                          "typeString": "function () view returns (uint256)"
                                        }
                                      },
                                      "id": 3867,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9895:22:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25586,
                                    "src": "9895:26:12",
                                    "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": 3870,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9895:29:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25586,
                                "src": "9895:33:12",
                                "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": 3873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9895:71:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3874,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9894:73:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3875,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25552,
                        "src": "9894:90:12",
                        "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": 3884,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9894:243:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9859:278:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3886,
                  "nodeType": "ExpressionStatement",
                  "src": "9859:278:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3887,
                      "name": "_reputationDeduction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3789,
                      "src": "10152:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3888,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10175:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10152:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3897,
                  "nodeType": "IfStatement",
                  "src": "10148:94:12",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3893,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3769,
                          "src": "10214:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3894,
                          "name": "_reputationDeduction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3789,
                          "src": "10221:20:12",
                          "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": 3890,
                            "name": "daoPointsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1237,
                            "src": "10178:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                              "typeString": "function () view returns (contract DaoPointsStorage)"
                            }
                          },
                          "id": 3891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10178:18:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                            "typeString": "contract DaoPointsStorage"
                          }
                        },
                        "id": 3892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reduceReputation",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14469,
                        "src": "10178:35:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address,uint256) external returns (uint256,uint256)"
                        }
                      },
                      "id": 3895,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10178:64:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "id": 3896,
                    "nodeType": "ExpressionStatement",
                    "src": "10178:64:12"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3901,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3769,
                        "src": "10314:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10348:1:12",
                            "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": 3902,
                              "name": "currentQuarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1021,
                              "src": "10321:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 3903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10321:22:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "10321:26:12",
                          "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": 3906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10321:29:12",
                        "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": 3898,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "10252:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 3899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10252:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 3900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateLastQuarterThatReputationWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14813,
                      "src": "10252:61:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 3907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10252:99:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3908,
                  "nodeType": "ExpressionStatement",
                  "src": "10252:99:12"
                }
              ]
            },
            "documentation": null,
            "id": 3910,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateUserReputationUntilPreviousQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3769,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3910,
                  "src": "6971:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3768,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6971:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6970:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3771,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7006:0:12"
            },
            "scope": 4666,
            "src": "6920:3438:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3977,
              "nodeType": "Block",
              "src": "10688:606:12",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3926,
                      "name": "_reputationDeduction",
                      "nodeType": "VariableDeclaration",
                      "scope": 3978,
                      "src": "10698:28:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3925,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10698:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3927,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10698:28:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3929,
                      "name": "_reputationAddition",
                      "nodeType": "VariableDeclaration",
                      "scope": 3978,
                      "src": "10736:27:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3928,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10736:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3930,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10736:27:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3931,
                      "name": "_userQP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3914,
                      "src": "10777:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3932,
                      "name": "_minimalQP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3916,
                      "src": "10787:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10777:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3975,
                    "nodeType": "Block",
                    "src": "11042:246:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3955,
                            "name": "_reputationAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3929,
                            "src": "11056:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3964,
                                "name": "_rpPerExtraQP_den",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3922,
                                "src": "11179:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3961,
                                    "name": "_rpPerExtraQP_num",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3920,
                                    "src": "11139:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3958,
                                        "name": "_minimalQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3916,
                                        "src": "11106:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3956,
                                        "name": "_userQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3914,
                                        "src": "11094:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3957,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25586,
                                      "src": "11094:11:12",
                                      "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": 3959,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11094:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25552,
                                  "src": "11094:44:12",
                                  "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": 3962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11094:63:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25566,
                              "src": "11094:84:12",
                              "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": 3965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11094:103:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11056:141:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3967,
                        "nodeType": "ExpressionStatement",
                        "src": "11056:141:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3971,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3912,
                              "src": "11250:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3972,
                              "name": "_reputationAddition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3929,
                              "src": "11257:19:12",
                              "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": 3968,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "11212:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 3969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11212:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 3970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increaseReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14384,
                            "src": "11212:37:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 3973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11212:65:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 3974,
                        "nodeType": "ExpressionStatement",
                        "src": "11212:65:12"
                      }
                    ]
                  },
                  "id": 3976,
                  "nodeType": "IfStatement",
                  "src": "10773:515:12",
                  "trueBody": {
                    "id": 3954,
                    "nodeType": "Block",
                    "src": "10799:237:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3934,
                            "name": "_reputationDeduction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3926,
                            "src": "10813:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3943,
                                "name": "_minimalQP",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3916,
                                "src": "10935:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3940,
                                    "name": "_maxRPDeduction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3918,
                                    "src": "10897:15:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3937,
                                        "name": "_userQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3914,
                                        "src": "10867:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3935,
                                        "name": "_minimalQP",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3916,
                                        "src": "10852:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3936,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25586,
                                      "src": "10852:14:12",
                                      "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": 3938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10852:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25552,
                                  "src": "10852:44:12",
                                  "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": 3941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10852:61:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25566,
                              "src": "10852:82:12",
                              "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": 3944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10852:94:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10813:133:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3946,
                        "nodeType": "ExpressionStatement",
                        "src": "10813:133:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3950,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3912,
                              "src": "10997:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3951,
                              "name": "_reputationDeduction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3926,
                              "src": "11004:20:12",
                              "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": 3947,
                                "name": "daoPointsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1237,
                                "src": "10961:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                }
                              },
                              "id": 3948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10961:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                "typeString": "contract DaoPointsStorage"
                              }
                            },
                            "id": 3949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reduceReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14469,
                            "src": "10961:35:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256,uint256)"
                            }
                          },
                          "id": 3952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10961:64:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 3953,
                        "nodeType": "ExpressionStatement",
                        "src": "10961:64:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3978,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateRPfromQP",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3912,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10503:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3911,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10503:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3914,
                  "name": "_userQP",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10526:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10526:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3916,
                  "name": "_minimalQP",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10551:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3915,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10551:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3918,
                  "name": "_maxRPDeduction",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10579:23:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3917,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10579:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3920,
                  "name": "_rpPerExtraQP_num",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10612:25:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3919,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10612:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3922,
                  "name": "_rpPerExtraQP_den",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "10647:25:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3921,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10647:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10493:185:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3924,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10688:0:12"
            },
            "scope": 4666,
            "src": "10469:825:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4113,
              "nodeType": "Block",
              "src": "11561:3809:12",
              "statements": [
                {
                  "assignments": [
                    3988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3988,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "11571:23:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                        "typeString": "struct DaoRewardsManagerCommon.UserRewards"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3987,
                        "name": "UserRewards",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1649,
                        "src": "11571:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserRewards_$1649_storage_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.UserRewards"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3992,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3990,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3980,
                        "src": "11618:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3989,
                      "name": "getUserRewardsStruct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1710,
                      "src": "11597:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_UserRewards_$1649_memory_ptr_$",
                        "typeString": "function (address) view returns (struct DaoRewardsManagerCommon.UserRewards memory)"
                      }
                    },
                    "id": 3991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11597:27:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                      "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11571:53:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3993,
                      "name": "_userClaimableDgx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3985,
                      "src": "11634:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3997,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3980,
                          "src": "11688:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3994,
                            "name": "daoRewardsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1251,
                            "src": "11654:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                              "typeString": "function () view returns (contract DaoRewardsStorage)"
                            }
                          },
                          "id": 3995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11654:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                            "typeString": "contract DaoRewardsStorage"
                          }
                        },
                        "id": 3996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "claimableDGXs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14565,
                        "src": "11654:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 3998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11654:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11634:60:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4000,
                  "nodeType": "ExpressionStatement",
                  "src": "11634:60:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4001,
                              "name": "currentQuarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1021,
                              "src": "12342:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12342:22:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4003,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3988,
                              "src": "12368:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                              }
                            },
                            "id": 4004,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastParticipatedQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1640,
                            "src": "12368:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12342:54:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 4006,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "12341:56:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4007,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3988,
                              "src": "12414:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                              }
                            },
                            "id": 4008,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastParticipatedQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1640,
                            "src": "12414:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4009,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3988,
                              "src": "12446:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                              }
                            },
                            "id": 4010,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastQuarterThatRewardsWasUpdated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1642,
                            "src": "12446:37:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12414:69:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 4012,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "12413:71:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12341:143:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4019,
                  "nodeType": "IfStatement",
                  "src": "12324:229:12",
                  "trueBody": {
                    "id": 4018,
                    "nodeType": "Block",
                    "src": "12495:58:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 4014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12517:5:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "id": 4015,
                              "name": "_userClaimableDgx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3985,
                              "src": "12524:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4016,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12516:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 3986,
                        "id": 4017,
                        "nodeType": "Return",
                        "src": "12509:33:12"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    4021
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4021,
                      "name": "_days_elapsed",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "13041:21:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4020,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13041:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4045,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 4043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13269:6:12",
                        "subdenomination": "days",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_86400_by_1",
                          "typeString": "int_const 86400"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4038,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13247:1:12",
                                    "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,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4035,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3988,
                                      "src": "13205:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                        "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                                      }
                                    },
                                    "id": 4036,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastQuarterThatRewardsWasUpdated",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1642,
                                    "src": "13205:37:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4037,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25610,
                                  "src": "13205:41:12",
                                  "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": 4039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13205:44:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4032,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "13162:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 4033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13162:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 4034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "readDgxDistributionDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15069,
                              "src": "13162:42:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 4040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13162:88:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4028,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13141:1:12",
                                    "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,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4025,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3988,
                                      "src": "13108:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                                        "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                                      }
                                    },
                                    "id": 4026,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastParticipatedQuarter",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1640,
                                    "src": "13108:28:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4027,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25610,
                                  "src": "13108:32:12",
                                  "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": 4029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13108:35:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4022,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "13065:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 4023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13065:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 4024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "readDgxDistributionDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15069,
                              "src": "13065:42:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 4030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13065:79:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25586,
                          "src": "13065:96:12",
                          "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": 4041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13065:186:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25566,
                      "src": "13065:203:12",
                      "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": 4044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13065:211:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13041:235:12"
                },
                {
                  "assignments": [
                    4047
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4047,
                      "name": "_demurrageFees",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "13286:22:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4046,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13286:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4054,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4051,
                        "name": "_userClaimableDgx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3985,
                        "src": "13366:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4052,
                        "name": "_days_elapsed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4021,
                        "src": "13397:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4048,
                          "name": "daoCalculatorService",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3572,
                          "src": "13311:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                            "typeString": "function () view returns (contract DaoCalculatorService)"
                          }
                        },
                        "id": 4049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13311:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                          "typeString": "contract DaoCalculatorService"
                        }
                      },
                      "id": 4050,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "calculateDemurrage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12092,
                      "src": "13311:41:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 4053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13311:109:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13286:134:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4055,
                      "name": "_userClaimableDgx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3985,
                      "src": "13430:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4058,
                          "name": "_demurrageFees",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4047,
                          "src": "13472:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4056,
                          "name": "_userClaimableDgx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3985,
                          "src": "13450:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "13450:21:12",
                        "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": 4059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13450:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13430:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4061,
                  "nodeType": "ExpressionStatement",
                  "src": "13430:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4065,
                        "name": "_demurrageFees",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4047,
                        "src": "14556:14:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4062,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "14515:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14515:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4064,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addToTotalDgxClaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14832,
                      "src": "14515:40:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14515:56:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4067,
                  "nodeType": "ExpressionStatement",
                  "src": "14515:56:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4069,
                      "name": "_dgxRewardsAsParticipant",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "14582:32:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4068,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14582:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4070,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14582:32:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4072,
                      "name": "_dgxRewardsAsModerator",
                      "nodeType": "VariableDeclaration",
                      "scope": 4114,
                      "src": "14624:30:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4071,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14624:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4073,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14624:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 4074,
                          "name": "_dgxRewardsAsParticipant",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4069,
                          "src": "14665:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4075,
                          "name": "_dgxRewardsAsModerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4072,
                          "src": "14691:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4076,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "14664:50:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4080,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3980,
                          "src": "14791:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4077,
                            "name": "daoRewardsManagerExtras",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3586,
                            "src": "14717:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsManagerExtras_$4891_$",
                              "typeString": "function () view returns (contract DaoRewardsManagerExtras)"
                            }
                          },
                          "id": 4078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14717:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DaoRewardsManagerExtras_$4891",
                            "typeString": "contract DaoRewardsManagerExtras"
                          }
                        },
                        "id": 4079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "calculateUserRewardsForLastParticipatingQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4890,
                        "src": "14717:73:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256,uint256)"
                        }
                      },
                      "id": 4081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14717:80:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "14664:133:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4083,
                  "nodeType": "ExpressionStatement",
                  "src": "14664:133:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4084,
                      "name": "_userClaimableDgx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3985,
                      "src": "14807:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4090,
                          "name": "_dgxRewardsAsModerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4072,
                          "src": "14879:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4087,
                              "name": "_dgxRewardsAsParticipant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4069,
                              "src": "14849:24:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4085,
                              "name": "_userClaimableDgx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3985,
                              "src": "14827:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "14827:21:12",
                            "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": 4088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14827:47:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25610,
                        "src": "14827:51:12",
                        "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": 4091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14827:75:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14807:95:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4093,
                  "nodeType": "ExpressionStatement",
                  "src": "14807:95:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4097,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3980,
                        "src": "15158:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4098,
                        "name": "_userClaimableDgx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3985,
                        "src": "15165:17:12",
                        "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": 4094,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "15119:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15119:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateClaimableDGX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14727,
                      "src": "15119:38:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 4099,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15119:64:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4100,
                  "nodeType": "ExpressionStatement",
                  "src": "15119:64:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4104,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3980,
                        "src": "15304:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4105,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3988,
                          "src": "15311:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserRewards_$1649_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.UserRewards memory"
                          }
                        },
                        "id": 4106,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lastParticipatedQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1640,
                        "src": "15311:28:12",
                        "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": 4101,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "15245:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15245:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateLastQuarterThatRewardsWasUpdated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14790,
                      "src": "15245:58:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 4107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15245:95:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4108,
                  "nodeType": "ExpressionStatement",
                  "src": "15245:95:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4109,
                      "name": "_valid",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3983,
                      "src": "15350:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4110,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15359:4:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "15350:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4112,
                  "nodeType": "ExpressionStatement",
                  "src": "15350:13:12"
                }
              ]
            },
            "documentation": null,
            "id": 4114,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateUserRewardsForLastParticipatingQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3980,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 4114,
                  "src": "11468:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3979,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11468:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11467:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 3986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3983,
                  "name": "_valid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4114,
                  "src": "11517:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3982,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11517:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3985,
                  "name": "_userClaimableDgx",
                  "nodeType": "VariableDeclaration",
                  "scope": 4114,
                  "src": "11530:25:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11530:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11516:40:12"
            },
            "scope": 4666,
            "src": "11414:3956:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4264,
              "nodeType": "Block",
              "src": "16462:1966:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4124,
                          "name": "isDaoNotReplaced",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 918,
                          "src": "16480:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 4125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16480:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4123,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16472:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16472:27:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4127,
                  "nodeType": "ExpressionStatement",
                  "src": "16472:27:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4129,
                                "name": "daoUpgradeStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1209,
                                "src": "16517:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoUpgradeStorage_$17964_$",
                                  "typeString": "function () view returns (contract DaoUpgradeStorage)"
                                }
                              },
                              "id": 4130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16517:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoUpgradeStorage_$17964",
                                "typeString": "contract DaoUpgradeStorage"
                              }
                            },
                            "id": 4131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startOfFirstQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17884,
                            "src": "16517:39:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 4132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16517:41:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16562:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16517:46:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16509:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16509:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4136,
                  "nodeType": "ExpressionStatement",
                  "src": "16509:55:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4138,
                          "name": "isLockingPhase",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 933,
                          "src": "16635:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 4139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16635:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4137,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16627:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16627:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4141,
                  "nodeType": "ExpressionStatement",
                  "src": "16627:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4146,
                                "name": "currentQuarterNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1021,
                                "src": "16713:20:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 4147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16713:22:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4143,
                                "name": "daoRewardsStorage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1251,
                                "src": "16670:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                  "typeString": "function () view returns (contract DaoRewardsStorage)"
                                }
                              },
                              "id": 4144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16670:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                "typeString": "contract DaoRewardsStorage"
                              }
                            },
                            "id": 4145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "readDgxDistributionDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15069,
                            "src": "16670:42:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view external returns (uint256)"
                            }
                          },
                          "id": 4148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16670:66:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16740:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16670:71:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4142,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16662:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16662:80:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4152,
                  "nodeType": "ExpressionStatement",
                  "src": "16662:80:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4154,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 4265,
                      "src": "16821:30:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                        "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4153,
                        "name": "QuarterRewardsInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1673,
                        "src": "16821:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_storage_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4155,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16821:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4156,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "16861:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4158,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "previousQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1651,
                      "src": "16861:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 4162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16911:1:12",
                          "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": 4159,
                            "name": "currentQuarterNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1021,
                            "src": "16884:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 4160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16884:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "16884:26:12",
                        "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": 4163,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16884:29:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16861:52:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4165,
                  "nodeType": "ExpressionStatement",
                  "src": "16861:52:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4167,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "16931:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4168,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "previousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1651,
                          "src": "16931:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16954:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16931:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4166,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "16923:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16923:33:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4172,
                  "nodeType": "ExpressionStatement",
                  "src": "16923:33:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4173,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "17004:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4175,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "qInfo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1663,
                      "src": "17004:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                        "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4177,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "17033:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4178,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "previousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1651,
                          "src": "17033:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4176,
                        "name": "readQuarterInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1767,
                        "src": "17017:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_struct$_DaoQuarterInfo_$8441_memory_ptr_$",
                          "typeString": "function (uint256) view returns (struct DaoStructs.DaoQuarterInfo memory)"
                        }
                      },
                      "id": 4179,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17017:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory_ptr",
                        "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                      }
                    },
                    "src": "17004:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                      "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                    }
                  },
                  "id": 4181,
                  "nodeType": "ExpressionStatement",
                  "src": "17004:50:12"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4185,
                      "name": "interResults",
                      "nodeType": "VariableDeclaration",
                      "scope": 4265,
                      "src": "17065:50:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                        "typeString": "struct DaoStructs.IntermediateResults"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4184,
                        "name": "DaoStructs.IntermediateResults",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8450,
                        "src": "17065:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_storage_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4186,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17065:50:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4187,
                            "name": "interResults",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4185,
                            "src": "17139:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                              "typeString": "struct DaoStructs.IntermediateResults memory"
                            }
                          },
                          "id": 4189,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "countedUntil",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8449,
                          "src": "17139:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        null,
                        null,
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4190,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "17180:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4191,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "totalEffectiveDGDPreviousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1653,
                          "src": "17180:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4192,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "17125:102:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$__$__$_t_uint256_$",
                        "typeString": "tuple(address,,,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4197,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4154,
                                "src": "17336:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4198,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "previousQuarter",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1651,
                              "src": "17336:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 4199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17358:5:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4196,
                            "name": "getIntermediateResultsIdForGlobalRewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4288,
                            "src": "17295:40:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bool_$returns$_t_bytes32_$",
                              "typeString": "function (uint256,bool) view returns (bytes32)"
                            }
                          },
                          "id": 4200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17295:69:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4193,
                            "name": "intermediateResultsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1265,
                            "src": "17230:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IntermediateResultsStorage_$18157_$",
                              "typeString": "function () view returns (contract IntermediateResultsStorage)"
                            }
                          },
                          "id": 4194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17230:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IntermediateResultsStorage_$18157",
                            "typeString": "contract IntermediateResultsStorage"
                          }
                        },
                        "id": 4195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getIntermediateResults",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18081,
                        "src": "17230:51:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes32) view external returns (address,uint256,uint256,uint256)"
                        }
                      },
                      "id": 4201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17230:144:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256,uint256)"
                      }
                    },
                    "src": "17125:249:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4203,
                  "nodeType": "ExpressionStatement",
                  "src": "17125:249:12"
                },
                {
                  "assignments": [
                    4205
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4205,
                      "name": "_operationsLeft",
                      "nodeType": "VariableDeclaration",
                      "scope": 4265,
                      "src": "17385:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4204,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17385:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4212,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4207,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "17431:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17437:5:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "id": 4209,
                        "name": "_operations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4116,
                        "src": "17444:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4210,
                        "name": "interResults",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4185,
                        "src": "17457:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      ],
                      "id": 4206,
                      "name": "sumEffectiveBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4665,
                      "src": "17411:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_QuarterRewardsInfo_$1673_memory_ptr_$_t_bool_$_t_uint256_$_t_struct$_IntermediateResults_$8450_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct DaoRewardsManagerCommon.QuarterRewardsInfo memory,bool,uint256,struct DaoStructs.IntermediateResults memory) returns (uint256)"
                      }
                    },
                    "id": 4211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17411:59:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17385:85:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "17669:37:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4213,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "17670:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4214,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "doneCalculatingEffectiveBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1670,
                      "src": "17670:36:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4219,
                  "nodeType": "IfStatement",
                  "src": "17665:60:12",
                  "trueBody": {
                    "id": 4218,
                    "nodeType": "Block",
                    "src": "17708:17:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 4216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17717:5:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 4122,
                        "id": 4217,
                        "nodeType": "Return",
                        "src": "17710:12:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4220,
                            "name": "interResults",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4185,
                            "src": "17749:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                              "typeString": "struct DaoStructs.IntermediateResults memory"
                            }
                          },
                          "id": 4222,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "countedUntil",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8449,
                          "src": "17749:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        null,
                        null,
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4223,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4154,
                            "src": "17790:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4224,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "totalEffectiveModeratorDGDLastQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1655,
                          "src": "17790:42:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4225,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "17735:107:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$__$__$_t_uint256_$",
                        "typeString": "tuple(address,,,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4230,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4154,
                                "src": "17951:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4231,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "previousQuarter",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1651,
                              "src": "17951:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 4232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17973:4:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4229,
                            "name": "getIntermediateResultsIdForGlobalRewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4288,
                            "src": "17910:40:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bool_$returns$_t_bytes32_$",
                              "typeString": "function (uint256,bool) view returns (bytes32)"
                            }
                          },
                          "id": 4233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17910:68:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4226,
                            "name": "intermediateResultsStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1265,
                            "src": "17845:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IntermediateResultsStorage_$18157_$",
                              "typeString": "function () view returns (contract IntermediateResultsStorage)"
                            }
                          },
                          "id": 4227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17845:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IntermediateResultsStorage_$18157",
                            "typeString": "contract IntermediateResultsStorage"
                          }
                        },
                        "id": 4228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getIntermediateResults",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18081,
                        "src": "17845:51:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (bytes32) view external returns (address,uint256,uint256,uint256)"
                        }
                      },
                      "id": 4234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17845:143:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256,uint256)"
                      }
                    },
                    "src": "17735:253:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4236,
                  "nodeType": "ExpressionStatement",
                  "src": "17735:253:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4238,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "18019:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18025:4:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "id": 4240,
                        "name": "_operationsLeft",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4205,
                        "src": "18031:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4241,
                        "name": "interResults",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4185,
                        "src": "18048:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      ],
                      "id": 4237,
                      "name": "sumEffectiveBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4665,
                      "src": "17999:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_QuarterRewardsInfo_$1673_memory_ptr_$_t_bool_$_t_uint256_$_t_struct$_IntermediateResults_$8450_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct DaoRewardsManagerCommon.QuarterRewardsInfo memory,bool,uint256,struct DaoStructs.IntermediateResults memory) returns (uint256)"
                      }
                    },
                    "id": 4242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17999:62:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4243,
                  "nodeType": "ExpressionStatement",
                  "src": "17999:62:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "18163:46:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4244,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "18164:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4245,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "doneCalculatingModeratorEffectiveBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1672,
                      "src": "18164:45:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4250,
                  "nodeType": "IfStatement",
                  "src": "18159:69:12",
                  "trueBody": {
                    "id": 4249,
                    "nodeType": "Block",
                    "src": "18211:17:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 4247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18220:5:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 4122,
                        "id": 4248,
                        "nodeType": "Return",
                        "src": "18213:12:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4252,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4154,
                        "src": "18339:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      ],
                      "id": 4251,
                      "name": "processGlobalRewardsUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4372,
                      "src": "18312:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_QuarterRewardsInfo_$1673_memory_ptr_$returns$__$",
                        "typeString": "function (struct DaoRewardsManagerCommon.QuarterRewardsInfo memory)"
                      }
                    },
                    "id": 4253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18312:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4254,
                  "nodeType": "ExpressionStatement",
                  "src": "18312:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4255,
                      "name": "_done",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4121,
                      "src": "18354:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18362:4:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "18354:12:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4258,
                  "nodeType": "ExpressionStatement",
                  "src": "18354:12:12"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4260,
                          "name": "currentQuarterNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1021,
                          "src": "18398:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 4261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18398:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4259,
                      "name": "StartNewQuarter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3556,
                      "src": "18382:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18382:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4263,
                  "nodeType": "EmitStatement",
                  "src": "18377:44:12"
                }
              ]
            },
            "documentation": "@notice Function called by the founder after transfering the DGX fees into the DAO at the beginning of the quarter\n@dev This function needs to do lots of calculation, so it might not fit into one transaction\nAs such, it could be done in multiple transactions, each time passing _operations which is the number of operations we want to calculate.\nWhen the value of _done is finally true, that's when the calculation is done.\nOnly after this function runs, any other activities in the DAO could happen.\nBasically, if there were M participants and N moderators in the previous quarter, it takes M+N \"operations\".\nIn summary, the function populates the DaoQuarterInfo of this quarter.\nThe bulk of the calculation is to go through every participant in the previous quarter to calculate their effectiveDGDBalance and sum them to get the\ntotalEffectiveDGDLastQuarter",
            "id": 4265,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 4119,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4118,
                  "name": "if_founder",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1898,
                  "src": "16416:10:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "16416:12:12"
              }
            ],
            "name": "calculateGlobalRewardsBeforeNewQuarter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4116,
                  "name": "_operations",
                  "nodeType": "VariableDeclaration",
                  "scope": 4265,
                  "src": "16372:19:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16372:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16371:21:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4121,
                  "name": "_done",
                  "nodeType": "VariableDeclaration",
                  "scope": 4265,
                  "src": "16446:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4120,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16446:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16445:12:12"
            },
            "scope": 4666,
            "src": "16324:2104:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4287,
              "nodeType": "Block",
              "src": "18653:185:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4274,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4272,
                      "src": "18663:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 4278,
                                "name": "_forModerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4269,
                                "src": "18709:13:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "id": 4280,
                                "name": "INTERMEDIATE_DGD_IDENTIFIER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1337,
                                "src": "18765:27:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 4281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "18709:83:12",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 4279,
                                "name": "INTERMEDIATE_MODERATOR_DGD_IDENTIFIER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1340,
                                "src": "18725:37:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4282,
                              "name": "_quarterNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4267,
                              "src": "18806:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4276,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26169,
                              "src": "18679:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 4277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18679:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 4283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18679:151:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4275,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26176,
                        "src": "18669:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                          "typeString": "function () pure returns (bytes32)"
                        }
                      },
                      "id": 4284,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18669:162:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18663:168:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4286,
                  "nodeType": "ExpressionStatement",
                  "src": "18663:168:12"
                }
              ]
            },
            "documentation": null,
            "id": 4288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getIntermediateResultsIdForGlobalRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4267,
                  "name": "_quarterNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4288,
                  "src": "18573:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4266,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18573:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4269,
                  "name": "_forModerator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4288,
                  "src": "18597:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4268,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18597:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18572:44:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4272,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 4288,
                  "src": "18640:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4271,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18640:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18639:13:12"
            },
            "scope": 4666,
            "src": "18523:315:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4371,
              "nodeType": "Block",
              "src": "19043:1223:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4293,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4290,
                        "src": "19119:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4295,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dgxRewardsPoolLastQuarter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1657,
                      "src": "19119:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4311,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "19288:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4312,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "qInfo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1663,
                            "src": "19288:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                            }
                          },
                          "id": 4313,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sumRewardsFromBeginning",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8440,
                          "src": "19288:34:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4305,
                                    "name": "daoRewardsStorage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1251,
                                    "src": "19231:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                      "typeString": "function () view returns (contract DaoRewardsStorage)"
                                    }
                                  },
                                  "id": 4306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19231:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                    "typeString": "contract DaoRewardsStorage"
                                  }
                                },
                                "id": 4307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalDGXsClaimed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14567,
                                "src": "19231:36:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 4308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19231:38:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4301,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26279,
                                      "src": "19207:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                                        "typeString": "contract DaoRewardsManager"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_DaoRewardsManager_$4666",
                                        "typeString": "contract DaoRewardsManager"
                                      }
                                    ],
                                    "id": 4300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "19199:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 4302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19199:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4297,
                                      "name": "ADDRESS_DGX_TOKEN",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3558,
                                      "src": "19170:17:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 4296,
                                    "name": "ERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25888,
                                    "src": "19164:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC20_$25888_$",
                                      "typeString": "type(contract ERC20)"
                                    }
                                  },
                                  "id": 4298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19164:24:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$25888",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 4299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25902,
                                "src": "19164:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 4303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19164:49:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25610,
                            "src": "19164:66:12",
                            "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": 4309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19164:106:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "19164:123:12",
                        "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": 4314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19164:159:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19119:204:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4316,
                  "nodeType": "ExpressionStatement",
                  "src": "19119:204:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19437:1:12",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4317,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "19393:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 4318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19393:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 4319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalLockedDGDStake",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15706,
                      "src": "19393:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19393:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4322,
                  "nodeType": "ExpressionStatement",
                  "src": "19393:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19498:1:12",
                        "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4323,
                          "name": "daoStakeStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "19449:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                            "typeString": "function () view returns (contract DaoStakeStorage)"
                          }
                        },
                        "id": 4324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19449:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                          "typeString": "contract DaoStakeStorage"
                        }
                      },
                      "id": 4325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateTotalModeratorLockedDGDs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15725,
                      "src": "19449:48:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19449:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4328,
                  "nodeType": "ExpressionStatement",
                  "src": "19449:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19587:1:12",
                            "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,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4332,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "19562:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4333,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "previousQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1651,
                            "src": "19562:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25610,
                          "src": "19562:24:12",
                          "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": 4336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19562:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4338,
                            "name": "CONFIG_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "19617:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4337,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19603:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19603:43:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4341,
                            "name": "CONFIG_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1526,
                            "src": "19674:35:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4340,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19660:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19660:50:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4344,
                            "name": "CONFIG_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1529,
                            "src": "19738:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4343,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19724:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19724:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4346,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "19791:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4347,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalEffectiveDGDPreviousQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1653,
                        "src": "19791:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4349,
                            "name": "CONFIG_MODERATOR_MINIMAL_QUARTER_POINT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1532,
                            "src": "19857:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4348,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19843:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19843:53:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4352,
                            "name": "CONFIG_MODERATOR_QUARTER_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1535,
                            "src": "19924:45:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4351,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19910:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19910:60:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4355,
                            "name": "CONFIG_MODERATOR_REPUTATION_POINT_SCALING_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1538,
                            "src": "19998:48:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 4354,
                          "name": "getUintConfig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "19984:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view returns (uint256)"
                          }
                        },
                        "id": 4356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19984:63:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4357,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "20061:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4358,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalEffectiveModeratorDGDLastQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1655,
                        "src": "20061:42:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4359,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26184,
                        "src": "20118:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4360,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "20135:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4361,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dgxRewardsPoolLastQuarter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1657,
                        "src": "20135:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4366,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "20218:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4367,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dgxRewardsPoolLastQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1657,
                            "src": "20218:30:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4362,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4290,
                                "src": "20179:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4363,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "qInfo",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1663,
                              "src": "20179:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                              }
                            },
                            "id": 4364,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sumRewardsFromBeginning",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8440,
                            "src": "20179:34:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25610,
                          "src": "20179:38:12",
                          "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": 4368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20179:70:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4329,
                          "name": "daoRewardsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "19511:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                            "typeString": "function () view returns (contract DaoRewardsStorage)"
                          }
                        },
                        "id": 4330,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19511:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                          "typeString": "contract DaoRewardsStorage"
                        }
                      },
                      "id": 4331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateQuarterInfo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14707,
                      "src": "19511:37:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) external"
                      }
                    },
                    "id": 4369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19511:748:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4370,
                  "nodeType": "ExpressionStatement",
                  "src": "19511:748:12"
                }
              ]
            },
            "documentation": null,
            "id": 4372,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "processGlobalRewardsUpdate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4290,
                  "name": "info",
                  "nodeType": "VariableDeclaration",
                  "scope": 4372,
                  "src": "19002:30:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                    "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4289,
                    "name": "QuarterRewardsInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1673,
                    "src": "19002:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_storage_ptr",
                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19001:32:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4292,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19043:0:12"
            },
            "scope": 4666,
            "src": "18966:1300:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4664,
              "nodeType": "Block",
              "src": "20728:3712:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4385,
                      "name": "_operations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4378,
                      "src": "20742:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4386,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20757:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "20742:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4390,
                  "nodeType": "IfStatement",
                  "src": "20738:40:12",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4388,
                      "name": "_operations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4378,
                      "src": "20767:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 4384,
                    "id": 4389,
                    "nodeType": "Return",
                    "src": "20760:18:12"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4391,
                        "name": "_interResults",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4380,
                        "src": "20826:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                          "typeString": "struct DaoStructs.IntermediateResults memory"
                        }
                      },
                      "id": 4392,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "countedUntil",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8449,
                      "src": "20826:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4393,
                      "name": "EMPTY_ADDRESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1298,
                      "src": "20856:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "20826:43:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4453,
                    "nodeType": "Block",
                    "src": "21269:556:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4415,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "21283:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4417,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "users",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1668,
                            "src": "21283:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "id": 4418,
                              "name": "_badgeCalculation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4376,
                              "src": "21296:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4430,
                                    "name": "_interResults",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4380,
                                    "src": "21477:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                                      "typeString": "struct DaoStructs.IntermediateResults memory"
                                    }
                                  },
                                  "id": 4431,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "countedUntil",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8449,
                                  "src": "21477:26:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4432,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21505:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4433,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21518:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4427,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21436:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4428,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21436:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listParticipantsFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12276,
                                "src": "21436:40:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (address,uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21436:87:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "21296:227:12",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4422,
                                    "name": "_interResults",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4380,
                                    "src": "21371:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                                      "typeString": "struct DaoStructs.IntermediateResults memory"
                                    }
                                  },
                                  "id": 4423,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "countedUntil",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8449,
                                  "src": "21371:26:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4424,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21399:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21412:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4419,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21332:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21332:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listModeratorsFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12213,
                                "src": "21332:38:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (address,uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21332:85:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "21283:240:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 4437,
                        "nodeType": "ExpressionStatement",
                        "src": "21283:240:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4438,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4374,
                                "src": "21679:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4439,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "users",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1668,
                              "src": "21679:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "21679:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4441,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21700:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21679:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4452,
                        "nodeType": "IfStatement",
                        "src": "21675:140:12",
                        "trueBody": {
                          "id": 4451,
                          "nodeType": "Block",
                          "src": "21703:112:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4443,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4374,
                                    "src": "21721:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                    }
                                  },
                                  "id": 4445,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "doneCalculatingEffectiveBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1670,
                                  "src": "21721:36:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21760:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "21721:43:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4448,
                              "nodeType": "ExpressionStatement",
                              "src": "21721:43:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4449,
                                "name": "_operations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4378,
                                "src": "21789:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 4384,
                              "id": 4450,
                              "nodeType": "Return",
                              "src": "21782:18:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 4454,
                  "nodeType": "IfStatement",
                  "src": "20822:1003:12",
                  "trueBody": {
                    "id": 4414,
                    "nodeType": "Block",
                    "src": "20871:392:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4395,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "21076:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4397,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "users",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1668,
                            "src": "21076:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "id": 4398,
                              "name": "_badgeCalculation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4376,
                              "src": "21089:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4408,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21234:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4409,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21247:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4405,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21197:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4406,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21197:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listParticipants",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12243,
                                "src": "21197:36:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21197:55:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "21089:163:12",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4402,
                                  "name": "_operations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4378,
                                  "src": "21160:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 4403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21173:4:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 4399,
                                    "name": "daoListingService",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "21125:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoListingService_$12488_$",
                                      "typeString": "function () view returns (contract DaoListingService)"
                                    }
                                  },
                                  "id": 4400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21125:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DaoListingService_$12488",
                                    "typeString": "contract DaoListingService"
                                  }
                                },
                                "id": 4401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listModerators",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12180,
                                "src": "21125:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$_t_bool_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,bool) view external returns (address[] memory)"
                                }
                              },
                              "id": 4404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21125:53:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "21076:176:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 4413,
                        "nodeType": "ExpressionStatement",
                        "src": "21076:176:12"
                      }
                    ]
                  }
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4456,
                      "name": "_lastAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 4665,
                      "src": "21835:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4455,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "21835:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4457,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21835:20:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4458,
                      "name": "_lastAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4456,
                      "src": "21865:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4459,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "21880:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4460,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "users",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1668,
                        "src": "21880:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4466,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4461,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "21891:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4462,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "users",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1668,
                            "src": "21891:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 4463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "21891:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 4464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21911:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "21891:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "21880:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "21865:48:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4468,
                  "nodeType": "ExpressionStatement",
                  "src": "21865:48:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4469,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4374,
                        "src": "21924:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4471,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "userCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1659,
                      "src": "21924:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4472,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "21941:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4473,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "users",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1668,
                        "src": "21941:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21941:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21924:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4476,
                  "nodeType": "ExpressionStatement",
                  "src": "21924:34:12"
                },
                {
                  "body": {
                    "id": 4602,
                    "nodeType": "Block",
                    "src": "22014:1589:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4492,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "22028:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4494,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentUser",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1665,
                            "src": "22028:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4495,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4374,
                                "src": "22047:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4496,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "users",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1668,
                              "src": "22047:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4499,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4497,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4374,
                                "src": "22058:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                }
                              },
                              "id": 4498,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1661,
                              "src": "22058:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22047:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "22028:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4501,
                        "nodeType": "ExpressionStatement",
                        "src": "22028:37:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4505,
                                  "name": "info",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4374,
                                  "src": "22215:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                    "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                  }
                                },
                                "id": 4506,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "currentUser",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1665,
                                "src": "22215:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4502,
                                  "name": "daoRewardsStorage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "22171:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoRewardsStorage_$15115_$",
                                    "typeString": "function () view returns (contract DaoRewardsStorage)"
                                  }
                                },
                                "id": 4503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22171:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DaoRewardsStorage_$15115",
                                  "typeString": "contract DaoRewardsStorage"
                                }
                              },
                              "id": 4504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastParticipatedQuarter",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14571,
                              "src": "22171:43:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 4507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22171:61:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4508,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "22236:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4509,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "previousQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1651,
                            "src": "22236:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22171:85:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4513,
                        "nodeType": "IfStatement",
                        "src": "22167:132:12",
                        "trueBody": {
                          "id": 4512,
                          "nodeType": "Block",
                          "src": "22258:41:12",
                          "statements": [
                            {
                              "id": 4511,
                              "nodeType": "Continue",
                              "src": "22276:8:12"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4514,
                          "name": "_badgeCalculation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4376,
                          "src": "22316:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4600,
                          "nodeType": "Block",
                          "src": "22990:603:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4558,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4374,
                                    "src": "23008:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                    }
                                  },
                                  "id": 4560,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "totalEffectiveDGDPreviousQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1653,
                                  "src": "23008:37:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4567,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "23164:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4568,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "23164:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4569,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "minimalParticipationPoint",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8420,
                                          "src": "23164:36:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4570,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "23222:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4571,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "23222:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4572,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "quarterPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8422,
                                          "src": "23222:36:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4573,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "23280:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4574,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "23280:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4575,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "reputationPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8424,
                                          "src": "23280:39:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4579,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23376:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4580,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "23376:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4581,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23394:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4582,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "previousQuarter",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1651,
                                              "src": "23394:20:12",
                                              "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": 4576,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "23341:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4577,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23341:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4578,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getQuarterPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14278,
                                            "src": "23341:34:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (address,uint256) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4583,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23341:74:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4587,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23470:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4588,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "23470:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4584,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "23437:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4585,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23437:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4586,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getReputation",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14484,
                                            "src": "23437:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4589,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23437:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4593,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "23542:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4594,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "23542:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4590,
                                                "name": "daoStakeStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1167,
                                                "src": "23509:15:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                                }
                                              },
                                              "id": 4591,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "23509:17:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                                "typeString": "contract DaoStakeStorage"
                                              }
                                            },
                                            "id": 4592,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lockedDGDStake",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 15618,
                                            "src": "23509:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4595,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23509:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 4564,
                                            "name": "daoCalculatorService",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3572,
                                            "src": "23090:20:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                              "typeString": "function () view returns (contract DaoCalculatorService)"
                                            }
                                          },
                                          "id": 4565,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "23090:22:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                            "typeString": "contract DaoCalculatorService"
                                          }
                                        },
                                        "id": 4566,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "calculateUserEffectiveBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12071,
                                        "src": "23090:52:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure external returns (uint256)"
                                        }
                                      },
                                      "id": 4596,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "23090:487:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4561,
                                        "name": "info",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4374,
                                        "src": "23048:4:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                        }
                                      },
                                      "id": 4562,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "totalEffectiveDGDPreviousQuarter",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1653,
                                      "src": "23048:37:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4563,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25610,
                                    "src": "23048:41:12",
                                    "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": 4597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23048:530:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23008:570:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4599,
                              "nodeType": "ExpressionStatement",
                              "src": "23008:570:12"
                            }
                          ]
                        },
                        "id": 4601,
                        "nodeType": "IfStatement",
                        "src": "22312:1281:12",
                        "trueBody": {
                          "id": 4557,
                          "nodeType": "Block",
                          "src": "22335:649:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4515,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4374,
                                    "src": "22353:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                    }
                                  },
                                  "id": 4517,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "totalEffectiveModeratorDGDLastQuarter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1655,
                                  "src": "22353:42:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4524,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "22519:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4525,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "22519:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4526,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "moderatorMinimalParticipationPoint",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8428,
                                          "src": "22519:45:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4527,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "22586:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4528,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "22586:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4529,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "moderatorQuarterPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8430,
                                          "src": "22586:45:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4530,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4374,
                                              "src": "22653:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                              }
                                            },
                                            "id": 4531,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "qInfo",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1663,
                                            "src": "22653:10:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DaoQuarterInfo_$8441_memory",
                                              "typeString": "struct DaoStructs.DaoQuarterInfo memory"
                                            }
                                          },
                                          "id": 4532,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "moderatorReputationPointScalingFactor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8432,
                                          "src": "22653:48:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4536,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22767:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4537,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "22767:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4538,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22785:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4539,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "previousQuarter",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1651,
                                              "src": "22785:20:12",
                                              "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": 4533,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "22723:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4534,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22723:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4535,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getQuarterModeratorPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14297,
                                            "src": "22723:43:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (address,uint256) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4540,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22723:83:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4544,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22861:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4545,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "22861:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4541,
                                                "name": "daoPointsStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1237,
                                                "src": "22828:16:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoPointsStorage_$14496_$",
                                                  "typeString": "function () view returns (contract DaoPointsStorage)"
                                                }
                                              },
                                              "id": 4542,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22828:18:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoPointsStorage_$14496",
                                                "typeString": "contract DaoPointsStorage"
                                              }
                                            },
                                            "id": 4543,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getReputation",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14484,
                                            "src": "22828:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4546,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22828:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4550,
                                                "name": "info",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4374,
                                                "src": "22933:4:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                                  "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                                }
                                              },
                                              "id": 4551,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentUser",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1665,
                                              "src": "22933:16:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "id": 4547,
                                                "name": "daoStakeStorage",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1167,
                                                "src": "22900:15:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                                  "typeString": "function () view returns (contract DaoStakeStorage)"
                                                }
                                              },
                                              "id": 4548,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "22900:17:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                                                "typeString": "contract DaoStakeStorage"
                                              }
                                            },
                                            "id": 4549,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lockedDGDStake",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 15618,
                                            "src": "22900:32:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 4552,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22900:50:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 4521,
                                            "name": "daoCalculatorService",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3572,
                                            "src": "22445:20:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoCalculatorService_$12093_$",
                                              "typeString": "function () view returns (contract DaoCalculatorService)"
                                            }
                                          },
                                          "id": 4522,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22445:22:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DaoCalculatorService_$12093",
                                            "typeString": "contract DaoCalculatorService"
                                          }
                                        },
                                        "id": 4523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "calculateUserEffectiveBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12071,
                                        "src": "22445:52:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure external returns (uint256)"
                                        }
                                      },
                                      "id": 4553,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22445:523:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4518,
                                        "name": "info",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4374,
                                        "src": "22398:4:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                                        }
                                      },
                                      "id": 4519,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "totalEffectiveModeratorDGDLastQuarter",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1655,
                                      "src": "22398:42:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25610,
                                    "src": "22398:46:12",
                                    "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": 4554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22398:571:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22353:616:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4556,
                              "nodeType": "ExpressionStatement",
                              "src": "22353:616:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4483,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4374,
                        "src": "21982:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4484,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "i",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1661,
                      "src": "21982:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4485,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4374,
                        "src": "21989:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                          "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                        }
                      },
                      "id": 4486,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1659,
                      "src": "21989:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21982:21:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4603,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4477,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "21973:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4479,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "i",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1661,
                        "src": "21973:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "21980:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "21973:8:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4482,
                    "nodeType": "ExpressionStatement",
                    "src": "21973:8:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "22004:8:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4488,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4374,
                          "src": "22004:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                            "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                          }
                        },
                        "id": 4489,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "i",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1661,
                        "src": "22004:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4491,
                    "nodeType": "ExpressionStatement",
                    "src": "22004:8:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "21968:1635:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4604,
                        "name": "_lastAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4456,
                        "src": "23686:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4605,
                              "name": "daoStakeStorage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1167,
                              "src": "23702:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                "typeString": "function () view returns (contract DaoStakeStorage)"
                              }
                            },
                            "id": 4606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23702:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                              "typeString": "contract DaoStakeStorage"
                            }
                          },
                          "id": 4607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "readLastModerator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15917,
                          "src": "23702:35:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 4608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23702:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "23686:53:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4610,
                      "name": "_badgeCalculation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4376,
                      "src": "23743:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "23686:74:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4619,
                  "nodeType": "IfStatement",
                  "src": "23682:157:12",
                  "trueBody": {
                    "id": 4618,
                    "nodeType": "Block",
                    "src": "23762:77:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4612,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "23776:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4614,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "doneCalculatingModeratorEffectiveBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1672,
                            "src": "23776:45:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23824:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "23776:52:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4617,
                        "nodeType": "ExpressionStatement",
                        "src": "23776:52:12"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4620,
                        "name": "_lastAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4456,
                        "src": "23852:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4621,
                              "name": "daoStakeStorage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1167,
                              "src": "23868:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoStakeStorage_$16026_$",
                                "typeString": "function () view returns (contract DaoStakeStorage)"
                              }
                            },
                            "id": 4622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23868:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoStakeStorage_$16026",
                              "typeString": "contract DaoStakeStorage"
                            }
                          },
                          "id": 4623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "readLastParticipant",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15983,
                          "src": "23868:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 4624,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23868:39:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "23852:55:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "23911:18:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4626,
                        "name": "_badgeCalculation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4376,
                        "src": "23912:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "23852:77:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4636,
                  "nodeType": "IfStatement",
                  "src": "23848:151:12",
                  "trueBody": {
                    "id": 4635,
                    "nodeType": "Block",
                    "src": "23931:68:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4629,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "23945:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4631,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "doneCalculatingEffectiveBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1670,
                            "src": "23945:36:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23984:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "23945:43:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4634,
                        "nodeType": "ExpressionStatement",
                        "src": "23945:43:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4641,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "24164:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                                "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                              }
                            },
                            "id": 4642,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "previousQuarter",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1651,
                            "src": "24164:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4643,
                            "name": "_badgeCalculation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4376,
                            "src": "24186:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4640,
                          "name": "getIntermediateResultsIdForGlobalRewards",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4288,
                          "src": "24123:40:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_bool_$returns$_t_bytes32_$",
                            "typeString": "function (uint256,bool) view returns (bytes32)"
                          }
                        },
                        "id": 4644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24123:81:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4645,
                        "name": "_lastAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4456,
                        "src": "24218:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24244:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24246:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 4648,
                          "name": "_badgeCalculation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4376,
                          "src": "24261:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4651,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4374,
                            "src": "24326:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalEffectiveDGDPreviousQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1653,
                          "src": "24326:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "24261:102:12",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4649,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4374,
                            "src": "24281:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4650,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalEffectiveModeratorDGDLastQuarter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1655,
                          "src": "24281:42:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4637,
                          "name": "intermediateResultsStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1265,
                          "src": "24058:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IntermediateResultsStorage_$18157_$",
                            "typeString": "function () view returns (contract IntermediateResultsStorage)"
                          }
                        },
                        "id": 4638,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24058:28:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IntermediateResultsStorage_$18157",
                          "typeString": "contract IntermediateResultsStorage"
                        }
                      },
                      "id": 4639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setIntermediateResults",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18156,
                      "src": "24058:51:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,uint256,uint256) external"
                      }
                    },
                    "id": 4654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24058:315:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4655,
                  "nodeType": "ExpressionStatement",
                  "src": "24058:315:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4656,
                      "name": "_operationsLeft",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4383,
                      "src": "24384:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4659,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4374,
                            "src": "24418:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                              "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo memory"
                            }
                          },
                          "id": 4660,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "userCount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1659,
                          "src": "24418:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4657,
                          "name": "_operations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4378,
                          "src": "24402:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25586,
                        "src": "24402:15:12",
                        "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": 4661,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24402:31:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24384:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4663,
                  "nodeType": "ExpressionStatement",
                  "src": "24384:49:12"
                }
              ]
            },
            "documentation": null,
            "id": 4665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "sumEffectiveBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4374,
                  "name": "info",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20445:30:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_memory_ptr",
                    "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4373,
                    "name": "QuarterRewardsInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1673,
                    "src": "20445:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_QuarterRewardsInfo_$1673_storage_ptr",
                      "typeString": "struct DaoRewardsManagerCommon.QuarterRewardsInfo"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4376,
                  "name": "_badgeCalculation",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20485:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4375,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20485:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4378,
                  "name": "_operations",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20581:19:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4377,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20581:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4380,
                  "name": "_interResults",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20610:51:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IntermediateResults_$8450_memory_ptr",
                    "typeString": "struct DaoStructs.IntermediateResults"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4379,
                    "name": "DaoStructs.IntermediateResults",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8450,
                    "src": "20610:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IntermediateResults_$8450_storage_ptr",
                      "typeString": "struct DaoStructs.IntermediateResults"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20435:232:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 4384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4383,
                  "name": "_operationsLeft",
                  "nodeType": "VariableDeclaration",
                  "scope": 4665,
                  "src": "20702:20:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4382,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20702:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20701:22:12"
            },
            "scope": 4666,
            "src": "20406:4034:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 4667,
        "src": "390:24052:12"
      }
    ],
    "src": "0:24443:12"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {},
      "links": {},
      "address": "0x8675fe349ce1fbfdd429fb1dcd3554336150db5a",
      "transactionHash": "0x7ace7663aa9d234f747059fc9b3f33bbbf7bfdbcd5a7d0f833560c56bf47d440"
    }
  },
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-16T08:53:49.811Z"
}