{
  "contractName": "DaoStakeStorage",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "resolver",
      "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": "",
          "type": "address"
        }
      ],
      "name": "carbonVoteBonusClaimed",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "actualLockedDGD",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalLockedDGDStake",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalModeratorLockedDGDStake",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "lockedDGDStake",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CONTRACT_ADDRESS",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "redeemedBadge",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_resolver",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "redeemBadge",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "setCarbonVoteBonusClaimed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_totalLockedDGDStake",
          "type": "uint256"
        }
      ],
      "name": "updateTotalLockedDGDStake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_totalLockedDGDStake",
          "type": "uint256"
        }
      ],
      "name": "updateTotalModeratorLockedDGDs",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_actualLockedDGD",
          "type": "uint256"
        },
        {
          "name": "_lockedDGDStake",
          "type": "uint256"
        }
      ],
      "name": "updateUserDGDStake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "readUserDGDStake",
      "outputs": [
        {
          "name": "_actualLockedDGD",
          "type": "uint256"
        },
        {
          "name": "_lockedDGDStake",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "addToParticipantList",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "removeFromParticipantList",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "addToModeratorList",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "removeFromModeratorList",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "isInParticipantList",
      "outputs": [
        {
          "name": "_is",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "isInModeratorsList",
      "outputs": [
        {
          "name": "_is",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "readFirstModerator",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "readLastModerator",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_current_item",
          "type": "address"
        }
      ],
      "name": "readNextModerator",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_current_item",
          "type": "address"
        }
      ],
      "name": "readPreviousModerator",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "readTotalModerators",
      "outputs": [
        {
          "name": "_total_count",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "readFirstParticipant",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "readLastParticipant",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_current_item",
          "type": "address"
        }
      ],
      "name": "readNextParticipant",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_current_item",
          "type": "address"
        }
      ],
      "name": "readPreviousParticipant",
      "outputs": [
        {
          "name": "_item",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "readTotalParticipant",
      "outputs": [
        {
          "name": "_total_count",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260006001026003906000191690556000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70726f706f73616c5f73746174655f70726570726f706f73616c0000000000006005906000191690557f70726f706f73616c5f73746174655f64726166740000000000000000000000006006906000191690557f70726f706f73616c5f73746174655f6d6f6465726174656400000000000000006007906000191690557f70726f706f73616c5f73746174655f6f6e676f696e67000000000000000000006008906000191690557f70726f706f73616c5f73746174655f636c6f73656400000000000000000000006009906000191690557f70726f706f73616c5f73746174655f6172636869766564000000000000000000600a906000191690556001600b556002600c556003600d556001600e556002600f5560036010557f696e7465725f6467645f696400000000000000000000000000000000000000006011906000191690557f696e7465725f6d6f645f6467645f6964000000000000000000000000000000006012906000191690557f696e7465725f626f6e75735f63616c63756c6174696f6e5f69640000000000006013906000191690557f64616f00000000000000000000000000000000000000000000000000000000006014906000191690557f64616f3a7370656369616c3a70726f706f73616c0000000000000000000000006015906000191690557f64616f3a7374616b652d6c6f636b696e670000000000000000000000000000006016906000191690557f64616f3a766f74696e67000000000000000000000000000000000000000000006017906000191690557f64616f3a766f74696e673a636c61696d730000000000000000000000000000006018906000191690557f64616f3a73766f74696e673a636c61696d7300000000000000000000000000006019906000191690557f64616f3a6964656e746974790000000000000000000000000000000000000000601a906000191690557f64616f3a726577617264732d6d616e6167657200000000000000000000000000601b906000191690557f64616f3a726577617264732d6578747261730000000000000000000000000000601c906000191690557f64616f3a726f6c65730000000000000000000000000000000000000000000000601d906000191690557f64616f3a66756e64696e672d6d616e6167657200000000000000000000000000601e906000191690557f64616f3a77686974656c697374696e6700000000000000000000000000000000601f906000191690557f64616f3a696e666f726d6174696f6e00000000000000000000000000000000006020906000191690557f736572766963653a726f6c6500000000000000000000000000000000000000006021906000191690557f736572766963653a64616f3a696e666f000000000000000000000000000000006022906000191690557f736572766963653a64616f3a6c697374696e67000000000000000000000000006023906000191690557f736572766963653a64616f3a63616c63756c61746f72000000000000000000006024906000191690557f73746f726167653a64616f0000000000000000000000000000000000000000006025906000191690557f73746f726167653a64616f3a636f756e746572000000000000000000000000006026906000191690557f73746f726167653a64616f3a75706772616465000000000000000000000000006027906000191690557f73746f726167653a64616f3a6964656e746974790000000000000000000000006028906000191690557f73746f726167653a64616f3a706f696e747300000000000000000000000000006029906000191690557f73746f726167653a64616f3a7370656369616c00000000000000000000000000602a906000191690557f73746f726167653a64616f3a636f6e6669670000000000000000000000000000602b906000191690557f73746f726167653a64616f3a7374616b65000000000000000000000000000000602c906000191690557f73746f726167653a64616f3a7265776172647300000000000000000000000000602d906000191690557f73746f726167653a64616f3a77686974656c697374696e670000000000000000602e906000191690557f73746f726167653a696e7465726d6564696174653a726573756c747300000000602f906000191690557f743a6467640000000000000000000000000000000000000000000000000000006030906000191690557f743a6467780000000000000000000000000000000000000000000000000000006031906000191690557f743a6261646765000000000000000000000000000000000000000000000000006032906000191690556001603360006101000a81548160ff021916908360ff1602179055506002603360016101000a81548160ff021916908360ff1602179055506003603360026101000a81548160ff021916908360ff1602179055506004603360036101000a81548160ff021916908360ff1602179055506276a7006034557f6d696e5f6467645f7061727469636970616e74000000000000000000000000006035906000191690557f6d696e5f6467645f6d6f64657261746f720000000000000000000000000000006036906000191690557f6d696e5f72657075746174696f6e5f6d6f64657261746f7200000000000000006037906000191690557f6c6f636b696e675f70686173655f6475726174696f6e000000000000000000006038906000191690557f717561727465725f6475726174696f6e000000000000000000000000000000006039906000191690557f766f74696e675f636f6d6d69745f706861736500000000000000000000000000603a906000191690557f766f74696e675f70686173655f746f74616c0000000000000000000000000000603b906000191690557f696e746572696d5f766f74696e675f636f6d6d69745f70686173650000000000603c906000191690557f696e746572696d5f766f74696e675f70686173655f746f74616c000000000000603d906000191690557f64726166745f71756f72756d5f66697865645f6e756d657261746f7200000000603e906000191690557f64726166745f71756f72756d5f66697865645f64656e6f6d696e61746f720000603f906000191690557f64726166745f71756f72756d5f73666163746f725f6e756d657261746f7200006040906000191690557f64726166745f71756f72756d5f73666163746f725f64656e6f6d696e61746f726041906000191690557f766f74655f71756f72756d5f66697865645f6e756d657261746f7200000000006042906000191690557f766f74655f71756f72756d5f66697865645f64656e6f6d696e61746f720000006043906000191690557f766f74655f71756f72756d5f73666163746f725f6e756d657261746f720000006044906000191690557f766f74655f71756f72756d5f73666163746f725f64656e6f6d696e61746f72006045906000191690557f66696e616c5f7265776172645f73666163746f725f6e756d657261746f7200006046906000191690557f66696e616c5f7265776172645f73666163746f725f64656e6f6d696e61746f726047906000191690557f64726166745f71756f74615f6e756d657261746f7200000000000000000000006048906000191690557f64726166745f71756f74615f64656e6f6d696e61746f720000000000000000006049906000191690557f766f74696e675f71756f74615f6e756d657261746f7200000000000000000000604a906000191690557f766f74696e675f71756f74615f64656e6f6d696e61746f720000000000000000604b906000191690557f6d696e696d616c5f717000000000000000000000000000000000000000000000604c906000191690557f717561727465725f706f696e745f7363616c696e675f666163746f7200000000604d906000191690557f7265705f706f696e745f7363616c696e675f666163746f720000000000000000604e906000191690557f6d696e696d616c5f6d6f645f7170000000000000000000000000000000000000604f906000191690557f6d6f645f71705f7363616c696e675f666163746f7200000000000000000000006050906000191690557f6d6f645f7265705f706f696e745f7363616c696e675f666163746f72000000006051906000191690557f717561727465725f706f696e745f64726166745f766f746500000000000000006052906000191690557f717561727465725f706f696e745f766f746500000000000000000000000000006053906000191690557f717561727465725f706f696e745f696e746572696d5f766f74650000000000006054906000191690557f715f705f6d696c6573746f6e655f636f6d706c6574696f6e00000000000000006055906000191690557f626f6e75735f72657075746174696f6e5f6e756d657261746f720000000000006056906000191690557f626f6e75735f72657075746174696f6e5f64656e6f6d696e61746f72000000006057906000191690557f7370656369616c5f70726f706f73616c5f636f6d6d69745f70686173650000006058906000191690557f7370656369616c5f70726f706f73616c5f70686173655f746f74616c000000006059906000191690557f636f6e6669675f7370656369616c5f71756f74615f6e756d657261746f720000605a906000191690557f636f6e6669675f7370656369616c5f71756f74615f64656e6f6d696e61746f72605b906000191690557f7370656369616c5f71756f72756d5f6e756d657261746f720000000000000000605c906000191690557f7370656369616c5f71756f72756d5f64656e6f6d696e61746f72000000000000605d906000191690557f636f6e6669675f6d61785f72657075746174696f6e5f646564756374696f6e00605e906000191690557f636f6e6669675f70756e6973686d656e745f6e6f745f6c6f636b696e67000000605f906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f6e756d00000000006060906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f64656e00000000006061906000191690557f636f6e6669675f6d61785f6d5f72705f646564756374696f6e000000000000006062906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f6e756d0000006063906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f64656e0000006064906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f6e756d000000000000000000006065906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f64656e000000000000000000006066906000191690557f636f6e6669675f64726166745f766f74696e675f7068617365000000000000006067906000191690557f636f6e6669675f72705f626f6f73745f7065725f6261646765000000000000006068906000191690557f636f6e6669675f636c61696d696e675f646561646c696e6500000000000000006069906000191690557f636f6e6669675f70726570726f706f73616c5f636f6c6c61746572616c000000606a906000191690557f636f6e6669675f6d61785f66756e64696e675f6e6f6e44696769780000000000606b906000191690557f636f6e6669675f6d61785f6d696c6573746f6e65735f6e6f6e44696769780000606c906000191690557f636f6e6669675f6e6f6e44696769785f70726f706f73616c5f63617000000000606d906000191690557f636f6e6669675f646561645f6475726174696f6e000000000000000000000000606e906000191690557f636f6e6669675f63765f72657075746174696f6e000000000000000000000000606f906000191690553480156200113457600080fd5b50604051602080620031b18339810180604052810190808051906020019092919050505062001175602c548262001188640100000000026401000000009004565b15156200118157600080fd5b5062001419565b6000808273ffffffffffffffffffffffffffffffffffffffff16636d19a8826040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620011f057600080fd5b505af115801562001205573d6000803e3d6000fd5b505050506040513d60208110156200121c57600080fd5b810190808051906020019092919050505090506000151581151514156200140d5730600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600181600019169055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0f6ef4a600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620013ba57600080fd5b505af1158015620013cf573d6000803e3d6000fd5b505050506040513d6020811015620013e657600080fd5b810190808051906020019092919050505015156200140357600080fd5b6001915062001412565b600091505b5092915050565b611d8880620014296000396000f300608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303a996a11461019b57806303cc89b4146101f657806304f3bcec146102395780630c30a1d5146102905780631538e68c146102eb5780633943380c146103185780633e0fd2651461034b5780633f83acff146103ce57806344d9bfe61461043f57806344e518a31461049a5780635515eb2c1461051d578063583fd501146105605780635bdd2743146105b757806363a64067146106155780636d080338146106985780637bbad0b8146106f357806382624a2e1461077657806388954a6c146107cd57806391baa14414610828578063abe8168c14610855578063abed029a146108ac578063ad5c4647146108d7578063b5830a4c1461092e578063bbb03dc214610959578063bf448a87146109b0578063cd094a27146109db578063db4ecbc114610a32578063e3bc96ba14610a89578063e3bd970e14610ab4578063e41b4c5c14610b0b578063f01a13e114610b66578063f2388b4214610bc1575b600080fd5b3480156101a757600080fd5b506101dc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c1c565b604051808215151515815260200191505060405180910390f35b34801561020257600080fd5b50610237600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d18565b005b34801561024557600080fd5b5061024e610d89565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029c57600080fd5b506102d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dae565b604051808215151515815260200191505060405180910390f35b3480156102f757600080fd5b5061031660048036038101908080359060200190929190505050610e97565b005b34801561032457600080fd5b5061032d610eee565b60405180826000191660001916815260200191505060405180910390f35b34801561035757600080fd5b5061038c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103fd6004803603810190808035600019169060200190929190505050610f08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044b57600080fd5b50610480600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe4565b604051808215151515815260200191505060405180910390f35b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052957600080fd5b5061055e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f4565b005b34801561056c57600080fd5b50610575611165565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c357600080fd5b506105f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611176565b604051808381526020018281526020019250505060405180910390f35b34801561062157600080fd5b50610656600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611202565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106a457600080fd5b506106d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611216565b604051808215151515815260200191505060405180910390f35b3480156106ff57600080fd5b50610734600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611236565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561078257600080fd5b5061078b61124a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107d957600080fd5b5061080e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125b565b604051808215151515815260200191505060405180910390f35b34801561083457600080fd5b5061085360048036038101908080359060200190929190505050611344565b005b34801561086157600080fd5b50610896600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061139b565b6040518082815260200191505060405180910390f35b3480156108b857600080fd5b506108c16113b3565b6040518082815260200191505060405180910390f35b3480156108e357600080fd5b5061092c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506113b9565b005b34801561093a57600080fd5b5061094361145c565b6040518082815260200191505060405180910390f35b34801561096557600080fd5b5061096e61146d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109bc57600080fd5b506109c561147e565b6040518082815260200191505060405180910390f35b3480156109e757600080fd5b50610a1c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611484565b6040518082815260200191505060405180910390f35b348015610a3e57600080fd5b50610a4761149c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9557600080fd5b50610a9e6114c2565b6040518082815260200191505060405180910390f35b348015610ac057600080fd5b50610ac96114d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1757600080fd5b50610b4c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b348015610b7257600080fd5b50610ba7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e0565b604051808215151515815260200191505060405180910390f35b348015610bcd57600080fd5b50610c02600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611600565b604051808215151515815260200191505060405180910390f35b6000610c296016546116fc565b1515610c3457600080fd5b607a73__DoublyLinkedList______________________63bf8a2ac69091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610cd657600080fd5b505af4158015610cea573d6000803e3d6000fd5b505050506040513d6020811015610d0057600080fd5b81019080805190602001909291905050509050919050565b610d236016546116fc565b1515610d2e57600080fd5b6001608060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080607473__DoublyLinkedList______________________637ee0a5839091856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610e5357600080fd5b505af4158015610e67573d6000803e3d6000fd5b505050506040513d6020811015610e7d57600080fd5b810190808051906020019092919050505014159050919050565b610ed960606040519081016040528060165460001916600019168152602001601b54600019166000191681526020016003546000191660001916815250611806565b1515610ee457600080fd5b8060728190555050565b60015481565b6000610f0160748361197d565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050506040513d6020811015610fcc57600080fd5b81019080805190602001909291905050509050919050565b6000610ff16016546116fc565b1515610ffc57600080fd5b607473__DoublyLinkedList______________________638dc8bc2b9091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561109e57600080fd5b505af41580156110b2573d6000803e3d6000fd5b505050506040513d60208110156110c857600080fd5b81019080805190602001909291905050509050919050565b60006110ed607a8361197d565b9050919050565b6110ff6016546116fc565b151561110a57600080fd5b6001608160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611171607a611a63565b905090565b600080607160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150607060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050915091565b600061120f607a83611b14565b9050919050565b60816020528060005260406000206000915054906101000a900460ff1681565b6000611243607483611b14565b9050919050565b60006112566074611bfa565b905090565b600080607a73__DoublyLinkedList______________________637ee0a5839091856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561130057600080fd5b505af4158015611314573d6000803e3d6000fd5b505050506040513d602081101561132a57600080fd5b810190808051906020019092919050505014159050919050565b61138660606040519081016040528060165460001916600019168152602001601b54600019166000191681526020016003546000191660001916815250611806565b151561139157600080fd5b8060738190555050565b60716020528060005260406000206000915090505481565b60725481565b6113c46016546116fc565b15156113cf57600080fd5b81607160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080607060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60006114686074611cab565b905090565b6000611479607a611bfa565b905090565b60735481565b60706020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114ce607a611cab565b905090565b60006114df6074611a63565b905090565b60006114f16016546116fc565b15156114fc57600080fd5b607473__DoublyLinkedList______________________63bf8a2ac69091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561159e57600080fd5b505af41580156115b2573d6000803e3d6000fd5b505050506040513d60208110156115c857600080fd5b81019080805190602001909291905050509050919050565b60806020528060005260406000206000915054906101000a900460ff1681565b600061160d6016546116fc565b151561161857600080fd5b607a73__DoublyLinkedList______________________638dc8bc2b9091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156116ba57600080fd5b505af41580156116ce573d6000803e3d6000fd5b505050506040513d60208110156116e457600080fd5b81019080805190602001909291905050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561179657600080fd5b505af11580156117aa573d6000803e3d6000fd5b505050506040513d60208110156117c057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b600080600060039150600090505b8181101561197657600060010260001916848260038110151561183357fe5b602002015160001916141561184757611969565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff858360038110151561189257fe5b60200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b505050506040513d602081101561191b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156119685760019250611976565b5b8080600101915050611814565b5050919050565b60008273__DoublyLinkedList______________________63a7b9777c9091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611a2057600080fd5b505af4158015611a34573d6000803e3d6000fd5b505050506040513d6020811015611a4a57600080fd5b8101908080519060200190929190505050905092915050565b60008173__DoublyLinkedList______________________63c333848890916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611ad257600080fd5b505af4158015611ae6573d6000803e3d6000fd5b505050506040513d6020811015611afc57600080fd5b81019080805190602001909291905050509050919050565b60008273__DoublyLinkedList______________________6387fca8a69091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611bb757600080fd5b505af4158015611bcb573d6000803e3d6000fd5b505050506040513d6020811015611be157600080fd5b8101908080519060200190929190505050905092915050565b60008173__DoublyLinkedList______________________63f46574aa90916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611c6957600080fd5b505af4158015611c7d573d6000803e3d6000fd5b505050506040513d6020811015611c9357600080fd5b81019080805190602001909291905050509050919050565b60008173__DoublyLinkedList______________________6312e3853d90916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611d1a57600080fd5b505af4158015611d2e573d6000803e3d6000fd5b505050506040513d6020811015611d4457600080fd5b810190808051906020019092919050505090509190505600a165627a7a7230582057c9fe8996dffd2a1656fbb185424e9ce6c1943648c73d836f1cb81704c434860029",
  "deployedBytecode": "0x608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303a996a11461019b57806303cc89b4146101f657806304f3bcec146102395780630c30a1d5146102905780631538e68c146102eb5780633943380c146103185780633e0fd2651461034b5780633f83acff146103ce57806344d9bfe61461043f57806344e518a31461049a5780635515eb2c1461051d578063583fd501146105605780635bdd2743146105b757806363a64067146106155780636d080338146106985780637bbad0b8146106f357806382624a2e1461077657806388954a6c146107cd57806391baa14414610828578063abe8168c14610855578063abed029a146108ac578063ad5c4647146108d7578063b5830a4c1461092e578063bbb03dc214610959578063bf448a87146109b0578063cd094a27146109db578063db4ecbc114610a32578063e3bc96ba14610a89578063e3bd970e14610ab4578063e41b4c5c14610b0b578063f01a13e114610b66578063f2388b4214610bc1575b600080fd5b3480156101a757600080fd5b506101dc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c1c565b604051808215151515815260200191505060405180910390f35b34801561020257600080fd5b50610237600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d18565b005b34801561024557600080fd5b5061024e610d89565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029c57600080fd5b506102d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dae565b604051808215151515815260200191505060405180910390f35b3480156102f757600080fd5b5061031660048036038101908080359060200190929190505050610e97565b005b34801561032457600080fd5b5061032d610eee565b60405180826000191660001916815260200191505060405180910390f35b34801561035757600080fd5b5061038c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103fd6004803603810190808035600019169060200190929190505050610f08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044b57600080fd5b50610480600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe4565b604051808215151515815260200191505060405180910390f35b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052957600080fd5b5061055e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f4565b005b34801561056c57600080fd5b50610575611165565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c357600080fd5b506105f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611176565b604051808381526020018281526020019250505060405180910390f35b34801561062157600080fd5b50610656600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611202565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106a457600080fd5b506106d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611216565b604051808215151515815260200191505060405180910390f35b3480156106ff57600080fd5b50610734600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611236565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561078257600080fd5b5061078b61124a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107d957600080fd5b5061080e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125b565b604051808215151515815260200191505060405180910390f35b34801561083457600080fd5b5061085360048036038101908080359060200190929190505050611344565b005b34801561086157600080fd5b50610896600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061139b565b6040518082815260200191505060405180910390f35b3480156108b857600080fd5b506108c16113b3565b6040518082815260200191505060405180910390f35b3480156108e357600080fd5b5061092c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506113b9565b005b34801561093a57600080fd5b5061094361145c565b6040518082815260200191505060405180910390f35b34801561096557600080fd5b5061096e61146d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109bc57600080fd5b506109c561147e565b6040518082815260200191505060405180910390f35b3480156109e757600080fd5b50610a1c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611484565b6040518082815260200191505060405180910390f35b348015610a3e57600080fd5b50610a4761149c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9557600080fd5b50610a9e6114c2565b6040518082815260200191505060405180910390f35b348015610ac057600080fd5b50610ac96114d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1757600080fd5b50610b4c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b348015610b7257600080fd5b50610ba7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e0565b604051808215151515815260200191505060405180910390f35b348015610bcd57600080fd5b50610c02600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611600565b604051808215151515815260200191505060405180910390f35b6000610c296016546116fc565b1515610c3457600080fd5b607a73__DoublyLinkedList______________________63bf8a2ac69091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610cd657600080fd5b505af4158015610cea573d6000803e3d6000fd5b505050506040513d6020811015610d0057600080fd5b81019080805190602001909291905050509050919050565b610d236016546116fc565b1515610d2e57600080fd5b6001608060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080607473__DoublyLinkedList______________________637ee0a5839091856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610e5357600080fd5b505af4158015610e67573d6000803e3d6000fd5b505050506040513d6020811015610e7d57600080fd5b810190808051906020019092919050505014159050919050565b610ed960606040519081016040528060165460001916600019168152602001601b54600019166000191681526020016003546000191660001916815250611806565b1515610ee457600080fd5b8060728190555050565b60015481565b6000610f0160748361197d565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050506040513d6020811015610fcc57600080fd5b81019080805190602001909291905050509050919050565b6000610ff16016546116fc565b1515610ffc57600080fd5b607473__DoublyLinkedList______________________638dc8bc2b9091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561109e57600080fd5b505af41580156110b2573d6000803e3d6000fd5b505050506040513d60208110156110c857600080fd5b81019080805190602001909291905050509050919050565b60006110ed607a8361197d565b9050919050565b6110ff6016546116fc565b151561110a57600080fd5b6001608160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611171607a611a63565b905090565b600080607160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150607060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050915091565b600061120f607a83611b14565b9050919050565b60816020528060005260406000206000915054906101000a900460ff1681565b6000611243607483611b14565b9050919050565b60006112566074611bfa565b905090565b600080607a73__DoublyLinkedList______________________637ee0a5839091856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561130057600080fd5b505af4158015611314573d6000803e3d6000fd5b505050506040513d602081101561132a57600080fd5b810190808051906020019092919050505014159050919050565b61138660606040519081016040528060165460001916600019168152602001601b54600019166000191681526020016003546000191660001916815250611806565b151561139157600080fd5b8060738190555050565b60716020528060005260406000206000915090505481565b60725481565b6113c46016546116fc565b15156113cf57600080fd5b81607160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080607060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60006114686074611cab565b905090565b6000611479607a611bfa565b905090565b60735481565b60706020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114ce607a611cab565b905090565b60006114df6074611a63565b905090565b60006114f16016546116fc565b15156114fc57600080fd5b607473__DoublyLinkedList______________________63bf8a2ac69091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561159e57600080fd5b505af41580156115b2573d6000803e3d6000fd5b505050506040513d60208110156115c857600080fd5b81019080805190602001909291905050509050919050565b60806020528060005260406000206000915054906101000a900460ff1681565b600061160d6016546116fc565b151561161857600080fd5b607a73__DoublyLinkedList______________________638dc8bc2b9091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156116ba57600080fd5b505af41580156116ce573d6000803e3d6000fd5b505050506040513d60208110156116e457600080fd5b81019080805190602001909291905050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561179657600080fd5b505af11580156117aa573d6000803e3d6000fd5b505050506040513d60208110156117c057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b600080600060039150600090505b8181101561197657600060010260001916848260038110151561183357fe5b602002015160001916141561184757611969565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff858360038110151561189257fe5b60200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b505050506040513d602081101561191b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156119685760019250611976565b5b8080600101915050611814565b5050919050565b60008273__DoublyLinkedList______________________63a7b9777c9091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611a2057600080fd5b505af4158015611a34573d6000803e3d6000fd5b505050506040513d6020811015611a4a57600080fd5b8101908080519060200190929190505050905092915050565b60008173__DoublyLinkedList______________________63c333848890916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611ad257600080fd5b505af4158015611ae6573d6000803e3d6000fd5b505050506040513d6020811015611afc57600080fd5b81019080805190602001909291905050509050919050565b60008273__DoublyLinkedList______________________6387fca8a69091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611bb757600080fd5b505af4158015611bcb573d6000803e3d6000fd5b505050506040513d6020811015611be157600080fd5b8101908080519060200190929190505050905092915050565b60008173__DoublyLinkedList______________________63f46574aa90916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611c6957600080fd5b505af4158015611c7d573d6000803e3d6000fd5b505050506040513d6020811015611c9357600080fd5b81019080805190602001909291905050509050919050565b60008173__DoublyLinkedList______________________6312e3853d90916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611d1a57600080fd5b505af4158015611d2e573d6000803e3d6000fd5b505050506040513d6020811015611d4457600080fd5b810190808051906020019092919050505090509190505600a165627a7a7230582057c9fe8996dffd2a1656fbb185424e9ce6c1943648c73d836f1cb81704c434860029",
  "sourceMap": "286:5869:59:-;;;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;;;;;;;;1573:107:59;8:9:-1;5:2;;;30:1;27;20:12;5:2;1573:107:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1629:43;1634:26;;1662:9;1629:4;;;:43;;;:::i;:::-;1621:52;;;;;;;;1573:107;286:5869;;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;286:5869:59:-;;;;;;;",
  "deployedSourceMap": "286:5869:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3565:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3565:205:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1686:155:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:23:67;;;;;;;;;;;;;;;;;;;;;;;;;;;3997:158:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3997:158:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:249;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:249:59;;;;;;;;;;;;;;;;;;;;;;;;;;264:18:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:18:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5567:197:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5567:197:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:179:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:179:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3340:219:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3340:219:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4650:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4650:193:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1847:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1847:178:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;4322:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4322:159:59;;;;;;;;;;;;;;;;;;;;;;;;;;;2837:282;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2837:282:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4849:201;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4849:201:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1511:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1511:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5770:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5770:205:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5400:161:59;;;;;;;;;;;;;;;;;;;;;;;;;;;4161:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4161:155:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2286:263;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2286:263:59;;;;;;;;;;;;;;;;;;;;;;;;;;711:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:51:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;839:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;839:34:59;;;;;;;;;;;;;;;;;;;;;;;2555:276;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2555:276:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5981:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5981:172:59;;;;;;;;;;;;;;;;;;;;;;;4487:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4487:157:59;;;;;;;;;;;;;;;;;;;;;;;;;;;923:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;923:43:59;;;;;;;;;;;;;;;;;;;;;;;506:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;506:50:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:31:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:31:67;;;;;;;;;;;;;;;;;;;;;;;;;;;5056:169:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5056:169:59;;;;;;;;;;;;;;;;;;;;;;;5231:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5231:163:59;;;;;;;;;;;;;;;;;;;;;;;;;;;3125:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3125:209:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1344:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1344:46:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3776:215;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3776:215:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3565:205;3640:13;3677:37;3687:26;;3677:9;:37::i;:::-;3669:46;;;;;;;;3736:13;:20;;;;3757:5;3736:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3736:27:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3736:27:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3736:27:59;;;;;;;;;;;;;;;;3725:38;;3565:205;;;:::o;1686:155::-;1759:37;1769:26;;1759:9;:37::i;:::-;1751:46;;;;;;;;1830:4;1807:13;:20;1821:5;1807:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1686:155;:::o;237:23:67:-;;;;;;;;;;;;;:::o;3997:158:59:-;4086:8;4147:1;4116:15;:20;;;;4137:5;4116:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4116:27:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4116:27:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4116:27:59;;;;;;;;;;;;;;;;:32;;4110:38;;3997:158;;;:::o;2031:249::-;2133:87;;;;;;;;;;2149:26;;2133:87;;;;;;;;;;2177:28;;2133:87;;;;;;;;;;2207:11;;2133:87;;;;;;;;;:14;:87::i;:::-;2125:96;;;;;;;;2253:20;2231:19;:42;;;;2031:249;:::o;264:18:67:-;;;;:::o;5567:197:59:-;5664:13;5701:56;5726:15;5743:13;5701:24;:56::i;:::-;5693:64;;5567:197;;;:::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;3340:219:59:-;3422:13;3459:37;3469:26;;3459:9;:37::i;:::-;3451:46;;;;;;;;3518:15;:27;;;;3546:5;3518:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3518:34:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3518:34:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3518:34:59;;;;;;;;;;;;;;;;3507:45;;3340:219;;;:::o;4650:193::-;4745:13;4782:54;4807:13;4822;4782:24;:54::i;:::-;4774:62;;4650:193;;;:::o;1847:178::-;1934:37;1944:26;;1934:9;:37::i;:::-;1926:46;;;;;;;;2014:4;1982:22;:29;2005:5;1982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;1847:178;:::o;4322:159::-;4397:13;4434:40;4460:13;4434:25;:40::i;:::-;4426:48;;4322:159;:::o;2837:282::-;2936:24;2974:23;3041:15;:22;3057:5;3041:22;;;;;;;;;;;;;;;;3022:41;;3091:14;:21;3106:5;3091:21;;;;;;;;;;;;;;;;3073:39;;2837:282;;;:::o;4849:201::-;4948:13;4985:58;5014:13;5029;4985:28;:58::i;:::-;4977:66;;4849:201;;;:::o;1511:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;5770:205::-;5871:13;5908:60;5937:15;5954:13;5908:28;:60::i;:::-;5900:68;;5770:205;;;:::o;5400:161::-;5476:13;5513:41;5538:15;5513:24;:41::i;:::-;5505:49;;5400:161;:::o;4161:155::-;4249:8;4308:1;4279:13;:18;;;;4298:5;4279:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:25:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4279:25:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4279:25:59;;;;;;;;;;;;;;;;:30;;4273:36;;4161:155;;;:::o;2286:263::-;2393:87;;;;;;;;;;2409:26;;2393:87;;;;;;;;;;2437:28;;2393:87;;;;;;;;;;2467:11;;2393:87;;;;;;;;;:14;:87::i;:::-;2385:96;;;;;;;;2522:20;2491:28;:51;;;;2286:263;:::o;711:51::-;;;;;;;;;;;;;;;;;:::o;839:34::-;;;;:::o;2555:276::-;2686:37;2696:26;;2686:9;:37::i;:::-;2678:46;;;;;;;;2759:16;2734:15;:22;2750:5;2734:22;;;;;;;;;;;;;;;:41;;;;2809:15;2785:14;:21;2800:5;2785:21;;;;;;;;;;;;;;;:39;;;;2555:276;;;:::o;5981:172::-;6058:20;6109:37;6130:15;6109:20;:37::i;:::-;6094:52;;5981:172;:::o;4487:157::-;4561:13;4598:39;4623:13;4598:24;:39::i;:::-;4590:47;;4487:157;:::o;923:43::-;;;;:::o;506:50::-;;;;;;;;;;;;;;;;;:::o;344:31:67:-;;;;;;;;;;;;;:::o;5056:169:59:-;5132:20;5183:35;5204:13;5183:20;:35::i;:::-;5168:50;;5056:169;:::o;5231:163::-;5308:13;5345:42;5371:15;5345:25;:42::i;:::-;5337:50;;5231:163;:::o;3125:209::-;3202:13;3239:37;3249:26;;3239:9;:37::i;:::-;3231:46;;;;;;;;3298:15;:22;;;;3321:5;3298:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3298:29:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3298:29:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3298:29:59;;;;;;;;;;;;;;;;3287:40;;3125:209;;;:::o;1344:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;3776:215::-;3856:13;3893:37;3903:26;;3893:9;:37::i;:::-;3885:46;;;;;;;;3952:13;:25;;;;3978:5;3952:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3952:32:59;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3952:32:59;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3952:32:59;;;;;;;;;;;;;;;;3941:43;;3776:215;;;:::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;881:350::-;951:12;971:10;1012:9;984:17;971:30;;1024:1;1012:13;;1007:220;1031:2;1027:1;:6;1007:220;;;1077:3;1069:12;;1052:29;;;:10;1063:1;1052:13;;;;;;;;;;;;;:29;;;;1048:43;;;1083:8;;1048:43;1134:8;;;;;;;;;;;1117:39;;;1157:10;1168:1;1157:13;;;;;;;;;;;;;1117:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1117:54:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1117:54:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1117:54:67;;;;;;;;;;;;;;;;1103:68;;:10;:68;;;1099:122;;;1193:4;1183:14;;1207:5;;1099:122;1007:220;1035:3;;;;;;;1007:220;;;881:350;;;;;:::o;1283:223:75:-;1440:13;1471:5;:15;;;;1487:13;1471:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:30:75;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1471:30:75;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1471:30:75;;;;;;;;;;;;;;;;1463:38;;1283:223;;;;:::o;487:189::-;622:13;653:5;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;653:18:75;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;653:18:75;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;653:18:75;;;;;;;;;;;;;;;;645:26;;487:189;;;:::o;1775:231::-;1936:13;1967:5;:19;;;;1987:13;1967:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1967:34:75;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1967:34:75;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1967:34:75;;;;;;;;;;;;;;;;1959:42;;1775:231;;;;:::o;836:186::-;970:13;1001:5;:14;;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:16:75;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1001:16:75;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1001:16:75;;;;;;;;;;;;;;;;993:24;;836:186;;;:::o;2176:181::-;2306:14;2339:5;:11;;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2339:13:75;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2339:13:75;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2339:13:75;;;;;;;;;;;;;;;;2330:22;;2176:181;;;:::o",
  "source": "pragma solidity ^0.4.25;\n\nimport \"@digix/solidity-collections/contracts/lib/DoublyLinkedList.sol\";\nimport \"@digix/solidity-collections/contracts/abstract/AddressIteratorStorage.sol\";\nimport \"@digix/cacp-contracts-dao/contracts/ResolverClient.sol\";\nimport \"../common/DaoConstants.sol\";\n\ncontract DaoStakeStorage is ResolverClient, DaoConstants, AddressIteratorStorage {\n    using DoublyLinkedList for DoublyLinkedList.Address;\n\n    // This is the DGD stake of a user (one that is considered in the DAO)\n    mapping (address => uint256) public lockedDGDStake;\n\n    // This is the actual number of DGDs locked by user\n    // may be more than the lockedDGDStake\n    // in case they locked during the main phase\n    mapping (address => uint256) public actualLockedDGD;\n\n    // The total locked DGDs in the DAO (summation of lockedDGDStake)\n    uint256 public totalLockedDGDStake;\n\n    // The total locked DGDs by moderators\n    uint256 public totalModeratorLockedDGDStake;\n\n    // The list of participants in DAO\n    // actual participants will be subset of this list\n    DoublyLinkedList.Address allParticipants;\n\n    // The list of moderators in DAO\n    // actual moderators will be subset of this list\n    DoublyLinkedList.Address allModerators;\n\n    // Boolean to mark if an address has redeemed\n    // reputation points for their DGD Badge\n    mapping (address => bool) public redeemedBadge;\n\n    // mapping to note whether an address has claimed their\n    // reputation bonus for carbon vote participation\n    mapping (address => bool) public carbonVoteBonusClaimed;\n\n    constructor(address _resolver) public {\n        require(init(CONTRACT_STORAGE_DAO_STAKE, _resolver));\n    }\n\n    function redeemBadge(address _user)\n        public\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n        redeemedBadge[_user] = true;\n    }\n\n    function setCarbonVoteBonusClaimed(address _user)\n        public\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n        carbonVoteBonusClaimed[_user] = true;\n    }\n\n    function updateTotalLockedDGDStake(uint256 _totalLockedDGDStake)\n        public\n    {\n        require(sender_is_from([CONTRACT_DAO_STAKE_LOCKING, CONTRACT_DAO_REWARDS_MANAGER, EMPTY_BYTES]));\n        totalLockedDGDStake = _totalLockedDGDStake;\n    }\n\n    function updateTotalModeratorLockedDGDs(uint256 _totalLockedDGDStake)\n        public\n    {\n        require(sender_is_from([CONTRACT_DAO_STAKE_LOCKING, CONTRACT_DAO_REWARDS_MANAGER, EMPTY_BYTES]));\n        totalModeratorLockedDGDStake = _totalLockedDGDStake;\n    }\n\n    function updateUserDGDStake(address _user, uint256 _actualLockedDGD, uint256 _lockedDGDStake)\n        public\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n        actualLockedDGD[_user] = _actualLockedDGD;\n        lockedDGDStake[_user] = _lockedDGDStake;\n    }\n\n    function readUserDGDStake(address _user)\n        public\n        view\n        returns (\n            uint256 _actualLockedDGD,\n            uint256 _lockedDGDStake\n        )\n    {\n        _actualLockedDGD = actualLockedDGD[_user];\n        _lockedDGDStake = lockedDGDStake[_user];\n    }\n\n    function addToParticipantList(address _user)\n        public\n        returns (bool _success)\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n        _success = allParticipants.append(_user);\n    }\n\n    function removeFromParticipantList(address _user)\n        public\n        returns (bool _success)\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n        _success = allParticipants.remove_item(_user);\n    }\n\n    function addToModeratorList(address _user)\n        public\n        returns (bool _success)\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n        _success = allModerators.append(_user);\n    }\n\n    function removeFromModeratorList(address _user)\n        public\n        returns (bool _success)\n    {\n        require(sender_is(CONTRACT_DAO_STAKE_LOCKING));\n        _success = allModerators.remove_item(_user);\n    }\n\n    function isInParticipantList(address _user)\n        public\n        view\n        returns (bool _is)\n    {\n        _is = allParticipants.find(_user) != 0;\n    }\n\n    function isInModeratorsList(address _user)\n        public\n        view\n        returns (bool _is)\n    {\n        _is = allModerators.find(_user) != 0;\n    }\n\n    function readFirstModerator()\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_first_from_addresses(allModerators);\n    }\n\n    function readLastModerator()\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_last_from_addresses(allModerators);\n    }\n\n    function readNextModerator(address _current_item)\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_next_from_addresses(allModerators, _current_item);\n    }\n\n    function readPreviousModerator(address _current_item)\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_previous_from_addresses(allModerators, _current_item);\n    }\n\n    function readTotalModerators()\n        public\n        view\n        returns (uint256 _total_count)\n    {\n        _total_count = read_total_addresses(allModerators);\n    }\n\n    function readFirstParticipant()\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_first_from_addresses(allParticipants);\n    }\n\n    function readLastParticipant()\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_last_from_addresses(allParticipants);\n    }\n\n    function readNextParticipant(address _current_item)\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_next_from_addresses(allParticipants, _current_item);\n    }\n\n    function readPreviousParticipant(address _current_item)\n        public\n        view\n        returns (address _item)\n    {\n        _item = read_previous_from_addresses(allParticipants, _current_item);\n    }\n\n    function readTotalParticipant()\n        public\n        view\n        returns (uint256 _total_count)\n    {\n        _total_count = read_total_addresses(allParticipants);\n    }\n}\n",
  "sourcePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoStakeStorage.sol",
  "ast": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoStakeStorage.sol",
    "exportedSymbols": {
      "DaoStakeStorage": [
        16026
      ]
    },
    "id": 16027,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15601,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:59"
      },
      {
        "absolutePath": "@digix/solidity-collections/contracts/lib/DoublyLinkedList.sol",
        "file": "@digix/solidity-collections/contracts/lib/DoublyLinkedList.sol",
        "id": 15602,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 25117,
        "src": "26:72:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/solidity-collections/contracts/abstract/AddressIteratorStorage.sol",
        "file": "@digix/solidity-collections/contracts/abstract/AddressIteratorStorage.sol",
        "id": 15603,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 21672,
        "src": "99:83:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 15604,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 18629,
        "src": "183:64:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoConstants.sol",
        "file": "../common/DaoConstants.sol",
        "id": 15605,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 1630,
        "src": "248:36:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15606,
              "name": "ResolverClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18628,
              "src": "314:14:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverClient_$18628",
                "typeString": "contract ResolverClient"
              }
            },
            "id": 15607,
            "nodeType": "InheritanceSpecifier",
            "src": "314:14:59"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15608,
              "name": "DaoConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1629,
              "src": "330:12:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoConstants_$1629",
                "typeString": "contract DaoConstants"
              }
            },
            "id": 15609,
            "nodeType": "InheritanceSpecifier",
            "src": "330:12:59"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15610,
              "name": "AddressIteratorStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21671,
              "src": "344:22:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressIteratorStorage_$21671",
                "typeString": "contract AddressIteratorStorage"
              }
            },
            "id": 15611,
            "nodeType": "InheritanceSpecifier",
            "src": "344:22:59"
          }
        ],
        "contractDependencies": [
          1629,
          18628,
          21671
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 16026,
        "linearizedBaseContracts": [
          16026,
          21671,
          1629,
          18628
        ],
        "name": "DaoStakeStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 15614,
            "libraryName": {
              "contractScope": null,
              "id": 15612,
              "name": "DoublyLinkedList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25116,
              "src": "379:16:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DoublyLinkedList_$25116",
                "typeString": "library DoublyLinkedList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "373:52:59",
            "typeName": {
              "contractScope": null,
              "id": 15613,
              "name": "DoublyLinkedList.Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22602,
              "src": "400:24:59",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Address_$22602_storage_ptr",
                "typeString": "struct DoublyLinkedList.Address"
              }
            }
          },
          {
            "constant": false,
            "id": 15618,
            "name": "lockedDGDStake",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "506:50:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 15617,
              "keyType": {
                "id": 15615,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "515:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "506:28:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 15616,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "526:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15622,
            "name": "actualLockedDGD",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "711:51:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 15621,
              "keyType": {
                "id": 15619,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "720:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "711:28:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 15620,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "731:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15624,
            "name": "totalLockedDGDStake",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "839:34:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15623,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "839:7:59",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15626,
            "name": "totalModeratorLockedDGDStake",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "923:43:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15625,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "923:7:59",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15628,
            "name": "allParticipants",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1067:40:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Address_$22602_storage",
              "typeString": "struct DoublyLinkedList.Address"
            },
            "typeName": {
              "contractScope": null,
              "id": 15627,
              "name": "DoublyLinkedList.Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22602,
              "src": "1067:24:59",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Address_$22602_storage_ptr",
                "typeString": "struct DoublyLinkedList.Address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 15630,
            "name": "allModerators",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1204:38:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Address_$22602_storage",
              "typeString": "struct DoublyLinkedList.Address"
            },
            "typeName": {
              "contractScope": null,
              "id": 15629,
              "name": "DoublyLinkedList.Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22602,
              "src": "1204:24:59",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Address_$22602_storage_ptr",
                "typeString": "struct DoublyLinkedList.Address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 15634,
            "name": "redeemedBadge",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1344:46:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 15633,
              "keyType": {
                "id": 15631,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1353:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1344:25:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 15632,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1364:4:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15638,
            "name": "carbonVoteBonusClaimed",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1511:55:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 15637,
              "keyType": {
                "id": 15635,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1520:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1511:25:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 15636,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1531:4:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15650,
              "nodeType": "Block",
              "src": "1611:69:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15645,
                            "name": "CONTRACT_STORAGE_DAO_STAKE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1418,
                            "src": "1634:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 15646,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15640,
                            "src": "1662:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 15644,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "1629:4:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 15647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1629:43:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15643,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1621:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1621:52:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15649,
                  "nodeType": "ExpressionStatement",
                  "src": "1621:52:59"
                }
              ]
            },
            "documentation": null,
            "id": 15651,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15640,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15651,
                  "src": "1585:17:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15639,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1585:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1584:19:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15642,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1611:0:59"
            },
            "scope": 16026,
            "src": "1573:107:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15668,
              "nodeType": "Block",
              "src": "1741:100:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15658,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "1769:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15657,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1759:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1759:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15656,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1751:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1751:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15661,
                  "nodeType": "ExpressionStatement",
                  "src": "1751:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15662,
                        "name": "redeemedBadge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15634,
                        "src": "1807:13:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 15664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15663,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15653,
                        "src": "1821:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1807:20:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 15665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1830:4:59",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1807:27:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15667,
                  "nodeType": "ExpressionStatement",
                  "src": "1807:27:59"
                }
              ]
            },
            "documentation": null,
            "id": 15669,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "redeemBadge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15653,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15669,
                  "src": "1707:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15652,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1707:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1706:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15655,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1741:0:59"
            },
            "scope": 16026,
            "src": "1686:155:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15686,
              "nodeType": "Block",
              "src": "1916:109:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15676,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "1944:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15675,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1934:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1934:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15674,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1926:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1926:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15679,
                  "nodeType": "ExpressionStatement",
                  "src": "1926:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15680,
                        "name": "carbonVoteBonusClaimed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15638,
                        "src": "1982:22:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 15682,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15681,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15671,
                        "src": "2005:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1982:29:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 15683,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2014:4:59",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1982:36:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15685,
                  "nodeType": "ExpressionStatement",
                  "src": "1982:36:59"
                }
              ]
            },
            "documentation": null,
            "id": 15687,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setCarbonVoteBonusClaimed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15671,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15687,
                  "src": "1882:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15670,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1882:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1881:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1916:0:59"
            },
            "scope": 16026,
            "src": "1847:178:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15705,
              "nodeType": "Block",
              "src": "2115:165:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 15694,
                                "name": "CONTRACT_DAO_STAKE_LOCKING",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1352,
                                "src": "2149:26:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15695,
                                "name": "CONTRACT_DAO_REWARDS_MANAGER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "2177:28:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15696,
                                "name": "EMPTY_BYTES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1293,
                                "src": "2207:11:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "id": 15697,
                            "isConstant": false,
                            "isInlineArray": true,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2148:71:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          ],
                          "id": 15693,
                          "name": "sender_is_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18529,
                          "src": "2133:14:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32[3] memory) view returns (bool)"
                          }
                        },
                        "id": 15698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2133:87:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15692,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2125:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2125:96:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15700,
                  "nodeType": "ExpressionStatement",
                  "src": "2125:96:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15701,
                      "name": "totalLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15624,
                      "src": "2231:19:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15702,
                      "name": "_totalLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15689,
                      "src": "2253:20:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2231:42:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15704,
                  "nodeType": "ExpressionStatement",
                  "src": "2231:42:59"
                }
              ]
            },
            "documentation": null,
            "id": 15706,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateTotalLockedDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15689,
                  "name": "_totalLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15706,
                  "src": "2066:28:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15688,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2066:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2065:30:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15691,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2115:0:59"
            },
            "scope": 16026,
            "src": "2031:249:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15724,
              "nodeType": "Block",
              "src": "2375:174:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 15713,
                                "name": "CONTRACT_DAO_STAKE_LOCKING",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1352,
                                "src": "2409:26:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15714,
                                "name": "CONTRACT_DAO_REWARDS_MANAGER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "2437:28:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15715,
                                "name": "EMPTY_BYTES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1293,
                                "src": "2467:11:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "id": 15716,
                            "isConstant": false,
                            "isInlineArray": true,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2408:71:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          ],
                          "id": 15712,
                          "name": "sender_is_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18529,
                          "src": "2393:14:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32[3] memory) view returns (bool)"
                          }
                        },
                        "id": 15717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2393:87:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15711,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2385:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2385:96:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15719,
                  "nodeType": "ExpressionStatement",
                  "src": "2385:96:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15720,
                      "name": "totalModeratorLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15626,
                      "src": "2491:28:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15721,
                      "name": "_totalLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15708,
                      "src": "2522:20:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2491:51:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15723,
                  "nodeType": "ExpressionStatement",
                  "src": "2491:51:59"
                }
              ]
            },
            "documentation": null,
            "id": 15725,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateTotalModeratorLockedDGDs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15708,
                  "name": "_totalLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15725,
                  "src": "2326:28:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2326:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2325:30:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15710,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2375:0:59"
            },
            "scope": 16026,
            "src": "2286:263:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15752,
              "nodeType": "Block",
              "src": "2668:163:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15736,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "2696:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15735,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "2686:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2686:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15734,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2678:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2678:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15739,
                  "nodeType": "ExpressionStatement",
                  "src": "2678:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15740,
                        "name": "actualLockedDGD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15622,
                        "src": "2734:15:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15742,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15741,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15727,
                        "src": "2750:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2734:22:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15743,
                      "name": "_actualLockedDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15729,
                      "src": "2759:16:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2734:41:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15745,
                  "nodeType": "ExpressionStatement",
                  "src": "2734:41:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15746,
                        "name": "lockedDGDStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15618,
                        "src": "2785:14:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15748,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15747,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15727,
                        "src": "2800:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2785:21:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15749,
                      "name": "_lockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15731,
                      "src": "2809:15:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2785:39:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15751,
                  "nodeType": "ExpressionStatement",
                  "src": "2785:39:59"
                }
              ]
            },
            "documentation": null,
            "id": 15753,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateUserDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15727,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15753,
                  "src": "2583:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15726,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2583:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15729,
                  "name": "_actualLockedDGD",
                  "nodeType": "VariableDeclaration",
                  "scope": 15753,
                  "src": "2598:24:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2598:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15731,
                  "name": "_lockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15753,
                  "src": "2624:23:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15730,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2624:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2582:66:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2668:0:59"
            },
            "scope": 16026,
            "src": "2555:276:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15774,
              "nodeType": "Block",
              "src": "3012:107:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15762,
                      "name": "_actualLockedDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15758,
                      "src": "3022:16:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15763,
                        "name": "actualLockedDGD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15622,
                        "src": "3041:15:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15765,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15764,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15755,
                        "src": "3057:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3041:22:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3022:41:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15767,
                  "nodeType": "ExpressionStatement",
                  "src": "3022:41:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15768,
                      "name": "_lockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15760,
                      "src": "3073:15:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15769,
                        "name": "lockedDGDStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15618,
                        "src": "3091:14:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15771,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15770,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15755,
                        "src": "3106:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3091:21:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3073:39:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15773,
                  "nodeType": "ExpressionStatement",
                  "src": "3073:39:59"
                }
              ]
            },
            "documentation": null,
            "id": 15775,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readUserDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15755,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15775,
                  "src": "2863:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15754,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2863:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2862:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15758,
                  "name": "_actualLockedDGD",
                  "nodeType": "VariableDeclaration",
                  "scope": 15775,
                  "src": "2936:24:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15757,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2936:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15760,
                  "name": "_lockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15775,
                  "src": "2974:23:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15759,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2974:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2922:85:59"
            },
            "scope": 16026,
            "src": "2837:282:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15795,
              "nodeType": "Block",
              "src": "3221:113:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15784,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3249:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15783,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3239:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3239:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15782,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3231:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3231:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15787,
                  "nodeType": "ExpressionStatement",
                  "src": "3231:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15788,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15780,
                      "src": "3287:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15791,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15777,
                          "src": "3321:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15789,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "3298:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15790,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "append",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 23985,
                        "src": "3298:22:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3298:29:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3287:40:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15794,
                  "nodeType": "ExpressionStatement",
                  "src": "3287:40:59"
                }
              ]
            },
            "documentation": null,
            "id": 15796,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addToParticipantList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15777,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15796,
                  "src": "3155:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3155:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3154:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15780,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15796,
                  "src": "3202:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15779,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3202:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3201:15:59"
            },
            "scope": 16026,
            "src": "3125:209:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15816,
              "nodeType": "Block",
              "src": "3441:118:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15805,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3469:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15804,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3459:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3459:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15803,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3451:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3451:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15808,
                  "nodeType": "ExpressionStatement",
                  "src": "3451:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15809,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15801,
                      "src": "3507:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15812,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15798,
                          "src": "3546:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15810,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "3518:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15811,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "remove_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24023,
                        "src": "3518:27:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15813,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3518:34:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3507:45:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15815,
                  "nodeType": "ExpressionStatement",
                  "src": "3507:45:59"
                }
              ]
            },
            "documentation": null,
            "id": 15817,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeFromParticipantList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15798,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15817,
                  "src": "3375:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3375:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3374:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15801,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15817,
                  "src": "3422:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15800,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3422:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3421:15:59"
            },
            "scope": 16026,
            "src": "3340:219:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15837,
              "nodeType": "Block",
              "src": "3659:111:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15826,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3687:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15825,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3677:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3677:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15824,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3669:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3669:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15829,
                  "nodeType": "ExpressionStatement",
                  "src": "3669:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15830,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15822,
                      "src": "3725:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15833,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15819,
                          "src": "3757:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15831,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "3736:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15832,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "append",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 23985,
                        "src": "3736:20:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15834,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3736:27:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3725:38:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15836,
                  "nodeType": "ExpressionStatement",
                  "src": "3725:38:59"
                }
              ]
            },
            "documentation": null,
            "id": 15838,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addToModeratorList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15820,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15819,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15838,
                  "src": "3593:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3593:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3592:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15822,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15838,
                  "src": "3640:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15821,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3640:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3639:15:59"
            },
            "scope": 16026,
            "src": "3565:205:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15858,
              "nodeType": "Block",
              "src": "3875:116:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15847,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3903:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15846,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3893:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15848,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3893:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15845,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3885:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3885:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15850,
                  "nodeType": "ExpressionStatement",
                  "src": "3885:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15851,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15843,
                      "src": "3941:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15854,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15840,
                          "src": "3978:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15852,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "3952:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15853,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "remove_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24023,
                        "src": "3952:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3952:32:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3941:43:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15857,
                  "nodeType": "ExpressionStatement",
                  "src": "3941:43:59"
                }
              ]
            },
            "documentation": null,
            "id": 15859,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeFromModeratorList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15840,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15859,
                  "src": "3809:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3809:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3808:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15843,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15859,
                  "src": "3856:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15842,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3856:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3855:15:59"
            },
            "scope": 16026,
            "src": "3776:215:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15875,
              "nodeType": "Block",
              "src": "4100:55:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15866,
                      "name": "_is",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15864,
                      "src": "4110:3:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 15872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15869,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15861,
                            "src": "4137:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 15867,
                            "name": "allParticipants",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15628,
                            "src": "4116:15:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Address_$22602_storage",
                              "typeString": "struct DoublyLinkedList.Address storage ref"
                            }
                          },
                          "id": 15868,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "find",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 23586,
                          "src": "4116:20:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                            "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (uint256)"
                          }
                        },
                        "id": 15870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4116:27:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 15871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4147:1:59",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4116:32:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4110:38:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15874,
                  "nodeType": "ExpressionStatement",
                  "src": "4110:38:59"
                }
              ]
            },
            "documentation": null,
            "id": 15876,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isInParticipantList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15861,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15876,
                  "src": "4026:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15860,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4026:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4025:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15864,
                  "name": "_is",
                  "nodeType": "VariableDeclaration",
                  "scope": 15876,
                  "src": "4086:8:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15863,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4086:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4085:10:59"
            },
            "scope": 16026,
            "src": "3997:158:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15892,
              "nodeType": "Block",
              "src": "4263:53:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15883,
                      "name": "_is",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15881,
                      "src": "4273:3:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 15889,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15886,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15878,
                            "src": "4298:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 15884,
                            "name": "allModerators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15630,
                            "src": "4279:13:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Address_$22602_storage",
                              "typeString": "struct DoublyLinkedList.Address storage ref"
                            }
                          },
                          "id": 15885,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "find",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 23586,
                          "src": "4279:18:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                            "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (uint256)"
                          }
                        },
                        "id": 15887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4279:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 15888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4308:1:59",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4279:30:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4273:36:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15891,
                  "nodeType": "ExpressionStatement",
                  "src": "4273:36:59"
                }
              ]
            },
            "documentation": null,
            "id": 15893,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isInModeratorsList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15878,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15893,
                  "src": "4189:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15877,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4189:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4188:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15882,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15881,
                  "name": "_is",
                  "nodeType": "VariableDeclaration",
                  "scope": 15893,
                  "src": "4249:8:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15880,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4249:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4248:10:59"
            },
            "scope": 16026,
            "src": "4161:155:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15904,
              "nodeType": "Block",
              "src": "4416:65:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15898,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15896,
                      "src": "4426:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15900,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "4460:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15899,
                        "name": "read_first_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21608,
                        "src": "4434:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15901,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4434:40:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4426:48:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15903,
                  "nodeType": "ExpressionStatement",
                  "src": "4426:48:59"
                }
              ]
            },
            "documentation": null,
            "id": 15905,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readFirstModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15894,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4349:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15896,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15905,
                  "src": "4397:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15895,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4397:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4396:15:59"
            },
            "scope": 16026,
            "src": "4322:159:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15916,
              "nodeType": "Block",
              "src": "4580:64:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15910,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15908,
                      "src": "4590:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15912,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "4623:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15911,
                        "name": "read_last_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21622,
                        "src": "4598:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4598:39:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4590:47:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15915,
                  "nodeType": "ExpressionStatement",
                  "src": "4590:47:59"
                }
              ]
            },
            "documentation": null,
            "id": 15917,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readLastModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15906,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4513:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15908,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15917,
                  "src": "4561:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4561:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4560:15:59"
            },
            "scope": 16026,
            "src": "4487:157:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15931,
              "nodeType": "Block",
              "src": "4764:79:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15924,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15922,
                      "src": "4774:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15926,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "4807:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 15927,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15919,
                          "src": "4822:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15925,
                        "name": "read_next_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21639,
                        "src": "4782:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 15928,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4782:54:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4774:62:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15930,
                  "nodeType": "ExpressionStatement",
                  "src": "4774:62:59"
                }
              ]
            },
            "documentation": null,
            "id": 15932,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readNextModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15919,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15932,
                  "src": "4677:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15918,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4677:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4676:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15922,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15932,
                  "src": "4745:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4745:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4744:15:59"
            },
            "scope": 16026,
            "src": "4650:193:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15946,
              "nodeType": "Block",
              "src": "4967:83:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15939,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15937,
                      "src": "4977:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15941,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "5014:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 15942,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15934,
                          "src": "5029:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15940,
                        "name": "read_previous_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21656,
                        "src": "4985:28:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 15943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4985:58:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4977:66:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15945,
                  "nodeType": "ExpressionStatement",
                  "src": "4977:66:59"
                }
              ]
            },
            "documentation": null,
            "id": 15947,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readPreviousModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15934,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15947,
                  "src": "4880:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15933,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4880:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4879:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15937,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15947,
                  "src": "4948:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15936,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4948:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4947:15:59"
            },
            "scope": 16026,
            "src": "4849:201:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15958,
              "nodeType": "Block",
              "src": "5158:67:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15952,
                      "name": "_total_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15950,
                      "src": "5168:12:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15954,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "5204:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15953,
                        "name": "read_total_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21670,
                        "src": "5183:20:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_uint256_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 15955,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5183:35:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5168:50:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15957,
                  "nodeType": "ExpressionStatement",
                  "src": "5168:50:59"
                }
              ]
            },
            "documentation": null,
            "id": 15959,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readTotalModerators",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15948,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5084:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15950,
                  "name": "_total_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 15959,
                  "src": "5132:20:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15949,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5132:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5131:22:59"
            },
            "scope": 16026,
            "src": "5056:169:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15970,
              "nodeType": "Block",
              "src": "5327:67:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15964,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15962,
                      "src": "5337:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15966,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5371:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15965,
                        "name": "read_first_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21608,
                        "src": "5345:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5345:42:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5337:50:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15969,
                  "nodeType": "ExpressionStatement",
                  "src": "5337:50:59"
                }
              ]
            },
            "documentation": null,
            "id": 15971,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readFirstParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15960,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5260:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15962,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15971,
                  "src": "5308:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5308:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5307:15:59"
            },
            "scope": 16026,
            "src": "5231:163:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15982,
              "nodeType": "Block",
              "src": "5495:66:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15976,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15974,
                      "src": "5505:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15978,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5538:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15977,
                        "name": "read_last_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21622,
                        "src": "5513:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15979,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5513:41:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5505:49:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15981,
                  "nodeType": "ExpressionStatement",
                  "src": "5505:49:59"
                }
              ]
            },
            "documentation": null,
            "id": 15983,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readLastParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15972,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5428:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15975,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15974,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15983,
                  "src": "5476:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15973,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5476:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5475:15:59"
            },
            "scope": 16026,
            "src": "5400:161:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15997,
              "nodeType": "Block",
              "src": "5683:81:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15990,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15988,
                      "src": "5693:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15992,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5726:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 15993,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15985,
                          "src": "5743:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15991,
                        "name": "read_next_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21639,
                        "src": "5701:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 15994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5701:56:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5693:64:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15996,
                  "nodeType": "ExpressionStatement",
                  "src": "5693:64:59"
                }
              ]
            },
            "documentation": null,
            "id": 15998,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readNextParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15985,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15998,
                  "src": "5596:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15984,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5596:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5595:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15988,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15998,
                  "src": "5664:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5664:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5663:15:59"
            },
            "scope": 16026,
            "src": "5567:197:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16012,
              "nodeType": "Block",
              "src": "5890:85:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 16005,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16003,
                      "src": "5900:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 16007,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5937:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 16008,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16000,
                          "src": "5954:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 16006,
                        "name": "read_previous_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21656,
                        "src": "5908:28:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 16009,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5908:60:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5900:68:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 16011,
                  "nodeType": "ExpressionStatement",
                  "src": "5900:68:59"
                }
              ]
            },
            "documentation": null,
            "id": 16013,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readPreviousParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16000,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 16013,
                  "src": "5803:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15999,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5803:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5802:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 16004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16003,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 16013,
                  "src": "5871:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5871:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5870:15:59"
            },
            "scope": 16026,
            "src": "5770:205:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16024,
              "nodeType": "Block",
              "src": "6084:69:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 16018,
                      "name": "_total_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16016,
                      "src": "6094:12:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 16020,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "6130:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 16019,
                        "name": "read_total_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21670,
                        "src": "6109:20:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_uint256_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 16021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6109:37:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6094:52:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 16023,
                  "nodeType": "ExpressionStatement",
                  "src": "6094:52:59"
                }
              ]
            },
            "documentation": null,
            "id": 16025,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readTotalParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6010:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 16017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16016,
                  "name": "_total_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 16025,
                  "src": "6058:20:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16015,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6058:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6057:22:59"
            },
            "scope": 16026,
            "src": "5981:172:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 16027,
        "src": "286:5869:59"
      }
    ],
    "src": "0:6156:59"
  },
  "legacyAST": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoStakeStorage.sol",
    "exportedSymbols": {
      "DaoStakeStorage": [
        16026
      ]
    },
    "id": 16027,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15601,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:59"
      },
      {
        "absolutePath": "@digix/solidity-collections/contracts/lib/DoublyLinkedList.sol",
        "file": "@digix/solidity-collections/contracts/lib/DoublyLinkedList.sol",
        "id": 15602,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 25117,
        "src": "26:72:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/solidity-collections/contracts/abstract/AddressIteratorStorage.sol",
        "file": "@digix/solidity-collections/contracts/abstract/AddressIteratorStorage.sol",
        "id": 15603,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 21672,
        "src": "99:83:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 15604,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 18629,
        "src": "183:64:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoConstants.sol",
        "file": "../common/DaoConstants.sol",
        "id": 15605,
        "nodeType": "ImportDirective",
        "scope": 16027,
        "sourceUnit": 1630,
        "src": "248:36:59",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15606,
              "name": "ResolverClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18628,
              "src": "314:14:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverClient_$18628",
                "typeString": "contract ResolverClient"
              }
            },
            "id": 15607,
            "nodeType": "InheritanceSpecifier",
            "src": "314:14:59"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15608,
              "name": "DaoConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1629,
              "src": "330:12:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoConstants_$1629",
                "typeString": "contract DaoConstants"
              }
            },
            "id": 15609,
            "nodeType": "InheritanceSpecifier",
            "src": "330:12:59"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15610,
              "name": "AddressIteratorStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21671,
              "src": "344:22:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressIteratorStorage_$21671",
                "typeString": "contract AddressIteratorStorage"
              }
            },
            "id": 15611,
            "nodeType": "InheritanceSpecifier",
            "src": "344:22:59"
          }
        ],
        "contractDependencies": [
          1629,
          18628,
          21671
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 16026,
        "linearizedBaseContracts": [
          16026,
          21671,
          1629,
          18628
        ],
        "name": "DaoStakeStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 15614,
            "libraryName": {
              "contractScope": null,
              "id": 15612,
              "name": "DoublyLinkedList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25116,
              "src": "379:16:59",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DoublyLinkedList_$25116",
                "typeString": "library DoublyLinkedList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "373:52:59",
            "typeName": {
              "contractScope": null,
              "id": 15613,
              "name": "DoublyLinkedList.Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22602,
              "src": "400:24:59",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Address_$22602_storage_ptr",
                "typeString": "struct DoublyLinkedList.Address"
              }
            }
          },
          {
            "constant": false,
            "id": 15618,
            "name": "lockedDGDStake",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "506:50:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 15617,
              "keyType": {
                "id": 15615,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "515:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "506:28:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 15616,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "526:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15622,
            "name": "actualLockedDGD",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "711:51:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 15621,
              "keyType": {
                "id": 15619,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "720:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "711:28:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 15620,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "731:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15624,
            "name": "totalLockedDGDStake",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "839:34:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15623,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "839:7:59",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15626,
            "name": "totalModeratorLockedDGDStake",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "923:43:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15625,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "923:7:59",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15628,
            "name": "allParticipants",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1067:40:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Address_$22602_storage",
              "typeString": "struct DoublyLinkedList.Address"
            },
            "typeName": {
              "contractScope": null,
              "id": 15627,
              "name": "DoublyLinkedList.Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22602,
              "src": "1067:24:59",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Address_$22602_storage_ptr",
                "typeString": "struct DoublyLinkedList.Address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 15630,
            "name": "allModerators",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1204:38:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Address_$22602_storage",
              "typeString": "struct DoublyLinkedList.Address"
            },
            "typeName": {
              "contractScope": null,
              "id": 15629,
              "name": "DoublyLinkedList.Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22602,
              "src": "1204:24:59",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Address_$22602_storage_ptr",
                "typeString": "struct DoublyLinkedList.Address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 15634,
            "name": "redeemedBadge",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1344:46:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 15633,
              "keyType": {
                "id": 15631,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1353:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1344:25:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 15632,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1364:4:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15638,
            "name": "carbonVoteBonusClaimed",
            "nodeType": "VariableDeclaration",
            "scope": 16026,
            "src": "1511:55:59",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 15637,
              "keyType": {
                "id": 15635,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1520:7:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1511:25:59",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 15636,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1531:4:59",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15650,
              "nodeType": "Block",
              "src": "1611:69:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15645,
                            "name": "CONTRACT_STORAGE_DAO_STAKE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1418,
                            "src": "1634:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 15646,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15640,
                            "src": "1662:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 15644,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "1629:4:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 15647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1629:43:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15643,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1621:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1621:52:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15649,
                  "nodeType": "ExpressionStatement",
                  "src": "1621:52:59"
                }
              ]
            },
            "documentation": null,
            "id": 15651,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15640,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15651,
                  "src": "1585:17:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15639,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1585:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1584:19:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15642,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1611:0:59"
            },
            "scope": 16026,
            "src": "1573:107:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15668,
              "nodeType": "Block",
              "src": "1741:100:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15658,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "1769:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15657,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1759:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1759:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15656,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1751:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1751:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15661,
                  "nodeType": "ExpressionStatement",
                  "src": "1751:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15662,
                        "name": "redeemedBadge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15634,
                        "src": "1807:13:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 15664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15663,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15653,
                        "src": "1821:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1807:20:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 15665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1830:4:59",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1807:27:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15667,
                  "nodeType": "ExpressionStatement",
                  "src": "1807:27:59"
                }
              ]
            },
            "documentation": null,
            "id": 15669,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "redeemBadge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15653,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15669,
                  "src": "1707:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15652,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1707:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1706:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15655,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1741:0:59"
            },
            "scope": 16026,
            "src": "1686:155:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15686,
              "nodeType": "Block",
              "src": "1916:109:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15676,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "1944:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15675,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1934:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1934:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15674,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1926:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1926:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15679,
                  "nodeType": "ExpressionStatement",
                  "src": "1926:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15680,
                        "name": "carbonVoteBonusClaimed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15638,
                        "src": "1982:22:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 15682,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15681,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15671,
                        "src": "2005:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1982:29:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 15683,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2014:4:59",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1982:36:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15685,
                  "nodeType": "ExpressionStatement",
                  "src": "1982:36:59"
                }
              ]
            },
            "documentation": null,
            "id": 15687,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setCarbonVoteBonusClaimed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15671,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15687,
                  "src": "1882:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15670,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1882:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1881:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1916:0:59"
            },
            "scope": 16026,
            "src": "1847:178:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15705,
              "nodeType": "Block",
              "src": "2115:165:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 15694,
                                "name": "CONTRACT_DAO_STAKE_LOCKING",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1352,
                                "src": "2149:26:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15695,
                                "name": "CONTRACT_DAO_REWARDS_MANAGER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "2177:28:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15696,
                                "name": "EMPTY_BYTES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1293,
                                "src": "2207:11:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "id": 15697,
                            "isConstant": false,
                            "isInlineArray": true,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2148:71:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          ],
                          "id": 15693,
                          "name": "sender_is_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18529,
                          "src": "2133:14:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32[3] memory) view returns (bool)"
                          }
                        },
                        "id": 15698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2133:87:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15692,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2125:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2125:96:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15700,
                  "nodeType": "ExpressionStatement",
                  "src": "2125:96:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15701,
                      "name": "totalLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15624,
                      "src": "2231:19:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15702,
                      "name": "_totalLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15689,
                      "src": "2253:20:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2231:42:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15704,
                  "nodeType": "ExpressionStatement",
                  "src": "2231:42:59"
                }
              ]
            },
            "documentation": null,
            "id": 15706,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateTotalLockedDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15689,
                  "name": "_totalLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15706,
                  "src": "2066:28:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15688,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2066:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2065:30:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15691,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2115:0:59"
            },
            "scope": 16026,
            "src": "2031:249:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15724,
              "nodeType": "Block",
              "src": "2375:174:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 15713,
                                "name": "CONTRACT_DAO_STAKE_LOCKING",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1352,
                                "src": "2409:26:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15714,
                                "name": "CONTRACT_DAO_REWARDS_MANAGER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "2437:28:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 15715,
                                "name": "EMPTY_BYTES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1293,
                                "src": "2467:11:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "id": 15716,
                            "isConstant": false,
                            "isInlineArray": true,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2408:71:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          ],
                          "id": 15712,
                          "name": "sender_is_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18529,
                          "src": "2393:14:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32[3] memory) view returns (bool)"
                          }
                        },
                        "id": 15717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2393:87:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15711,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2385:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2385:96:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15719,
                  "nodeType": "ExpressionStatement",
                  "src": "2385:96:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15720,
                      "name": "totalModeratorLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15626,
                      "src": "2491:28:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15721,
                      "name": "_totalLockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15708,
                      "src": "2522:20:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2491:51:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15723,
                  "nodeType": "ExpressionStatement",
                  "src": "2491:51:59"
                }
              ]
            },
            "documentation": null,
            "id": 15725,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateTotalModeratorLockedDGDs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15708,
                  "name": "_totalLockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15725,
                  "src": "2326:28:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2326:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2325:30:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15710,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2375:0:59"
            },
            "scope": 16026,
            "src": "2286:263:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15752,
              "nodeType": "Block",
              "src": "2668:163:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15736,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "2696:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15735,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "2686:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2686:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15734,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2678:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2678:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15739,
                  "nodeType": "ExpressionStatement",
                  "src": "2678:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15740,
                        "name": "actualLockedDGD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15622,
                        "src": "2734:15:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15742,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15741,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15727,
                        "src": "2750:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2734:22:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15743,
                      "name": "_actualLockedDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15729,
                      "src": "2759:16:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2734:41:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15745,
                  "nodeType": "ExpressionStatement",
                  "src": "2734:41:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15746,
                        "name": "lockedDGDStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15618,
                        "src": "2785:14:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15748,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15747,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15727,
                        "src": "2800:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2785:21:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15749,
                      "name": "_lockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15731,
                      "src": "2809:15:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2785:39:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15751,
                  "nodeType": "ExpressionStatement",
                  "src": "2785:39:59"
                }
              ]
            },
            "documentation": null,
            "id": 15753,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "updateUserDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15727,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15753,
                  "src": "2583:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15726,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2583:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15729,
                  "name": "_actualLockedDGD",
                  "nodeType": "VariableDeclaration",
                  "scope": 15753,
                  "src": "2598:24:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2598:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15731,
                  "name": "_lockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15753,
                  "src": "2624:23:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15730,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2624:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2582:66:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2668:0:59"
            },
            "scope": 16026,
            "src": "2555:276:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15774,
              "nodeType": "Block",
              "src": "3012:107:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15762,
                      "name": "_actualLockedDGD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15758,
                      "src": "3022:16:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15763,
                        "name": "actualLockedDGD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15622,
                        "src": "3041:15:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15765,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15764,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15755,
                        "src": "3057:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3041:22:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3022:41:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15767,
                  "nodeType": "ExpressionStatement",
                  "src": "3022:41:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15768,
                      "name": "_lockedDGDStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15760,
                      "src": "3073:15:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15769,
                        "name": "lockedDGDStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15618,
                        "src": "3091:14:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15771,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15770,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15755,
                        "src": "3106:5:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3091:21:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3073:39:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15773,
                  "nodeType": "ExpressionStatement",
                  "src": "3073:39:59"
                }
              ]
            },
            "documentation": null,
            "id": 15775,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readUserDGDStake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15755,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15775,
                  "src": "2863:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15754,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2863:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2862:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15758,
                  "name": "_actualLockedDGD",
                  "nodeType": "VariableDeclaration",
                  "scope": 15775,
                  "src": "2936:24:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15757,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2936:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15760,
                  "name": "_lockedDGDStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 15775,
                  "src": "2974:23:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15759,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2974:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2922:85:59"
            },
            "scope": 16026,
            "src": "2837:282:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15795,
              "nodeType": "Block",
              "src": "3221:113:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15784,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3249:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15783,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3239:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3239:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15782,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3231:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3231:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15787,
                  "nodeType": "ExpressionStatement",
                  "src": "3231:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15788,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15780,
                      "src": "3287:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15791,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15777,
                          "src": "3321:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15789,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "3298:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15790,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "append",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 23985,
                        "src": "3298:22:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3298:29:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3287:40:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15794,
                  "nodeType": "ExpressionStatement",
                  "src": "3287:40:59"
                }
              ]
            },
            "documentation": null,
            "id": 15796,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addToParticipantList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15777,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15796,
                  "src": "3155:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3155:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3154:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15780,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15796,
                  "src": "3202:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15779,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3202:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3201:15:59"
            },
            "scope": 16026,
            "src": "3125:209:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15816,
              "nodeType": "Block",
              "src": "3441:118:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15805,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3469:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15804,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3459:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3459:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15803,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3451:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3451:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15808,
                  "nodeType": "ExpressionStatement",
                  "src": "3451:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15809,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15801,
                      "src": "3507:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15812,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15798,
                          "src": "3546:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15810,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "3518:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15811,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "remove_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24023,
                        "src": "3518:27:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15813,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3518:34:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3507:45:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15815,
                  "nodeType": "ExpressionStatement",
                  "src": "3507:45:59"
                }
              ]
            },
            "documentation": null,
            "id": 15817,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeFromParticipantList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15798,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15817,
                  "src": "3375:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3375:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3374:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15801,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15817,
                  "src": "3422:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15800,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3422:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3421:15:59"
            },
            "scope": 16026,
            "src": "3340:219:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15837,
              "nodeType": "Block",
              "src": "3659:111:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15826,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3687:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15825,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3677:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3677:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15824,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3669:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3669:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15829,
                  "nodeType": "ExpressionStatement",
                  "src": "3669:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15830,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15822,
                      "src": "3725:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15833,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15819,
                          "src": "3757:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15831,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "3736:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15832,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "append",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 23985,
                        "src": "3736:20:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15834,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3736:27:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3725:38:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15836,
                  "nodeType": "ExpressionStatement",
                  "src": "3725:38:59"
                }
              ]
            },
            "documentation": null,
            "id": 15838,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addToModeratorList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15820,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15819,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15838,
                  "src": "3593:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3593:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3592:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15822,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15838,
                  "src": "3640:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15821,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3640:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3639:15:59"
            },
            "scope": 16026,
            "src": "3565:205:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15858,
              "nodeType": "Block",
              "src": "3875:116:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15847,
                            "name": "CONTRACT_DAO_STAKE_LOCKING",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "3903:26:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 15846,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "3893:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 15848,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3893:37:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15845,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "3885:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3885:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15850,
                  "nodeType": "ExpressionStatement",
                  "src": "3885:46:59"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15851,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15843,
                      "src": "3941:8:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15854,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15840,
                          "src": "3978:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 15852,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "3952:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        "id": 15853,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "remove_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24023,
                        "src": "3952:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) returns (bool)"
                        }
                      },
                      "id": 15855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3952:32:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3941:43:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15857,
                  "nodeType": "ExpressionStatement",
                  "src": "3941:43:59"
                }
              ]
            },
            "documentation": null,
            "id": 15859,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeFromModeratorList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15840,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15859,
                  "src": "3809:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3809:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3808:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15843,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 15859,
                  "src": "3856:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15842,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3856:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3855:15:59"
            },
            "scope": 16026,
            "src": "3776:215:59",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15875,
              "nodeType": "Block",
              "src": "4100:55:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15866,
                      "name": "_is",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15864,
                      "src": "4110:3:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 15872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15869,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15861,
                            "src": "4137:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 15867,
                            "name": "allParticipants",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15628,
                            "src": "4116:15:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Address_$22602_storage",
                              "typeString": "struct DoublyLinkedList.Address storage ref"
                            }
                          },
                          "id": 15868,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "find",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 23586,
                          "src": "4116:20:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                            "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (uint256)"
                          }
                        },
                        "id": 15870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4116:27:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 15871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4147:1:59",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4116:32:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4110:38:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15874,
                  "nodeType": "ExpressionStatement",
                  "src": "4110:38:59"
                }
              ]
            },
            "documentation": null,
            "id": 15876,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isInParticipantList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15861,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15876,
                  "src": "4026:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15860,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4026:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4025:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15864,
                  "name": "_is",
                  "nodeType": "VariableDeclaration",
                  "scope": 15876,
                  "src": "4086:8:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15863,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4086:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4085:10:59"
            },
            "scope": 16026,
            "src": "3997:158:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15892,
              "nodeType": "Block",
              "src": "4263:53:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15883,
                      "name": "_is",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15881,
                      "src": "4273:3:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 15889,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15886,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15878,
                            "src": "4298:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 15884,
                            "name": "allModerators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15630,
                            "src": "4279:13:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Address_$22602_storage",
                              "typeString": "struct DoublyLinkedList.Address storage ref"
                            }
                          },
                          "id": 15885,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "find",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 23586,
                          "src": "4279:18:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Address_$22602_storage_ptr_$",
                            "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (uint256)"
                          }
                        },
                        "id": 15887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4279:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 15888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4308:1:59",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4279:30:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4273:36:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15891,
                  "nodeType": "ExpressionStatement",
                  "src": "4273:36:59"
                }
              ]
            },
            "documentation": null,
            "id": 15893,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isInModeratorsList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15878,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 15893,
                  "src": "4189:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15877,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4189:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4188:15:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15882,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15881,
                  "name": "_is",
                  "nodeType": "VariableDeclaration",
                  "scope": 15893,
                  "src": "4249:8:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15880,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4249:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4248:10:59"
            },
            "scope": 16026,
            "src": "4161:155:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15904,
              "nodeType": "Block",
              "src": "4416:65:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15898,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15896,
                      "src": "4426:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15900,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "4460:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15899,
                        "name": "read_first_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21608,
                        "src": "4434:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15901,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4434:40:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4426:48:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15903,
                  "nodeType": "ExpressionStatement",
                  "src": "4426:48:59"
                }
              ]
            },
            "documentation": null,
            "id": 15905,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readFirstModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15894,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4349:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15896,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15905,
                  "src": "4397:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15895,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4397:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4396:15:59"
            },
            "scope": 16026,
            "src": "4322:159:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15916,
              "nodeType": "Block",
              "src": "4580:64:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15910,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15908,
                      "src": "4590:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15912,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "4623:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15911,
                        "name": "read_last_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21622,
                        "src": "4598:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4598:39:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4590:47:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15915,
                  "nodeType": "ExpressionStatement",
                  "src": "4590:47:59"
                }
              ]
            },
            "documentation": null,
            "id": 15917,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readLastModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15906,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4513:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15908,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15917,
                  "src": "4561:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4561:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4560:15:59"
            },
            "scope": 16026,
            "src": "4487:157:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15931,
              "nodeType": "Block",
              "src": "4764:79:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15924,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15922,
                      "src": "4774:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15926,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "4807:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 15927,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15919,
                          "src": "4822:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15925,
                        "name": "read_next_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21639,
                        "src": "4782:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 15928,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4782:54:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4774:62:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15930,
                  "nodeType": "ExpressionStatement",
                  "src": "4774:62:59"
                }
              ]
            },
            "documentation": null,
            "id": 15932,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readNextModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15919,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15932,
                  "src": "4677:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15918,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4677:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4676:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15922,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15932,
                  "src": "4745:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4745:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4744:15:59"
            },
            "scope": 16026,
            "src": "4650:193:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15946,
              "nodeType": "Block",
              "src": "4967:83:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15939,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15937,
                      "src": "4977:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15941,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "5014:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 15942,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15934,
                          "src": "5029:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15940,
                        "name": "read_previous_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21656,
                        "src": "4985:28:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 15943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4985:58:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4977:66:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15945,
                  "nodeType": "ExpressionStatement",
                  "src": "4977:66:59"
                }
              ]
            },
            "documentation": null,
            "id": 15947,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readPreviousModerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15934,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15947,
                  "src": "4880:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15933,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4880:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4879:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15937,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15947,
                  "src": "4948:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15936,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4948:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4947:15:59"
            },
            "scope": 16026,
            "src": "4849:201:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15958,
              "nodeType": "Block",
              "src": "5158:67:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15952,
                      "name": "_total_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15950,
                      "src": "5168:12:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15954,
                          "name": "allModerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15630,
                          "src": "5204:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15953,
                        "name": "read_total_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21670,
                        "src": "5183:20:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_uint256_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 15955,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5183:35:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5168:50:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15957,
                  "nodeType": "ExpressionStatement",
                  "src": "5168:50:59"
                }
              ]
            },
            "documentation": null,
            "id": 15959,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readTotalModerators",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15948,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5084:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15950,
                  "name": "_total_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 15959,
                  "src": "5132:20:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15949,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5132:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5131:22:59"
            },
            "scope": 16026,
            "src": "5056:169:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15970,
              "nodeType": "Block",
              "src": "5327:67:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15964,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15962,
                      "src": "5337:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15966,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5371:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15965,
                        "name": "read_first_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21608,
                        "src": "5345:25:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5345:42:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5337:50:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15969,
                  "nodeType": "ExpressionStatement",
                  "src": "5337:50:59"
                }
              ]
            },
            "documentation": null,
            "id": 15971,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readFirstParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15960,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5260:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15962,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15971,
                  "src": "5308:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5308:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5307:15:59"
            },
            "scope": 16026,
            "src": "5231:163:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15982,
              "nodeType": "Block",
              "src": "5495:66:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15976,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15974,
                      "src": "5505:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15978,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5538:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 15977,
                        "name": "read_last_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21622,
                        "src": "5513:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (address)"
                        }
                      },
                      "id": 15979,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5513:41:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5505:49:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15981,
                  "nodeType": "ExpressionStatement",
                  "src": "5505:49:59"
                }
              ]
            },
            "documentation": null,
            "id": 15983,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readLastParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15972,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5428:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15975,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15974,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15983,
                  "src": "5476:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15973,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5476:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5475:15:59"
            },
            "scope": 16026,
            "src": "5400:161:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15997,
              "nodeType": "Block",
              "src": "5683:81:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15990,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15988,
                      "src": "5693:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15992,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5726:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 15993,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15985,
                          "src": "5743:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15991,
                        "name": "read_next_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21639,
                        "src": "5701:24:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 15994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5701:56:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5693:64:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15996,
                  "nodeType": "ExpressionStatement",
                  "src": "5693:64:59"
                }
              ]
            },
            "documentation": null,
            "id": 15998,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readNextParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15985,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15998,
                  "src": "5596:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15984,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5596:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5595:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 15989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15988,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 15998,
                  "src": "5664:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5664:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5663:15:59"
            },
            "scope": 16026,
            "src": "5567:197:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16012,
              "nodeType": "Block",
              "src": "5890:85:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 16005,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16003,
                      "src": "5900:5:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 16007,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "5937:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 16008,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16000,
                          "src": "5954:13:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 16006,
                        "name": "read_previous_from_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21656,
                        "src": "5908:28:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$_t_address_$returns$_t_address_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer,address) view returns (address)"
                        }
                      },
                      "id": 16009,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5908:60:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5900:68:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 16011,
                  "nodeType": "ExpressionStatement",
                  "src": "5900:68:59"
                }
              ]
            },
            "documentation": null,
            "id": 16013,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readPreviousParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16000,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 16013,
                  "src": "5803:21:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15999,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5803:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5802:23:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 16004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16003,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 16013,
                  "src": "5871:13:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5871:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5870:15:59"
            },
            "scope": 16026,
            "src": "5770:205:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16024,
              "nodeType": "Block",
              "src": "6084:69:59",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 16018,
                      "name": "_total_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16016,
                      "src": "6094:12:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 16020,
                          "name": "allParticipants",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15628,
                          "src": "6130:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Address_$22602_storage",
                            "typeString": "struct DoublyLinkedList.Address storage ref"
                          }
                        ],
                        "id": 16019,
                        "name": "read_total_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21670,
                        "src": "6109:20:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Address_$22602_storage_ptr_$returns$_t_uint256_$",
                          "typeString": "function (struct DoublyLinkedList.Address storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 16021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6109:37:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6094:52:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 16023,
                  "nodeType": "ExpressionStatement",
                  "src": "6094:52:59"
                }
              ]
            },
            "documentation": null,
            "id": 16025,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "readTotalParticipant",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6010:2:59"
            },
            "payable": false,
            "returnParameters": {
              "id": 16017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16016,
                  "name": "_total_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 16025,
                  "src": "6058:20:59",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16015,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6058:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6057:22:59"
            },
            "scope": 16026,
            "src": "5981:172:59",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 16027,
        "src": "286:5869:59"
      }
    ],
    "src": "0:6156:59"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {},
      "links": {
        "DoublyLinkedList": "0x8045c179449f1501786a1bc68224fc49f8463d08"
      },
      "address": "0x48f4568ac9a8d2460e9226b72f9fd90c368937c7",
      "transactionHash": "0x002adaf86682148db983ed640af1eccaada3d877682342fe762dc9d5970467f2"
    }
  },
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-16T08:53:12.894Z"
}