{
  "contractName": "DaoIdentity",
  "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": "CONTRACT_ADDRESS",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_resolver",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        },
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_doc",
          "type": "bytes32"
        }
      ],
      "name": "addGroupUser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "removeGroupUser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_doc",
          "type": "bytes32"
        },
        {
          "name": "_id_expiration",
          "type": "uint256"
        }
      ],
      "name": "updateKyc",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260006001026003906000191690556000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70726f706f73616c5f73746174655f70726570726f706f73616c0000000000006005906000191690557f70726f706f73616c5f73746174655f64726166740000000000000000000000006006906000191690557f70726f706f73616c5f73746174655f6d6f6465726174656400000000000000006007906000191690557f70726f706f73616c5f73746174655f6f6e676f696e67000000000000000000006008906000191690557f70726f706f73616c5f73746174655f636c6f73656400000000000000000000006009906000191690557f70726f706f73616c5f73746174655f6172636869766564000000000000000000600a906000191690556001600b556002600c556003600d556001600e556002600f5560036010557f696e7465725f6467645f696400000000000000000000000000000000000000006011906000191690557f696e7465725f6d6f645f6467645f6964000000000000000000000000000000006012906000191690557f696e7465725f626f6e75735f63616c63756c6174696f6e5f69640000000000006013906000191690557f64616f00000000000000000000000000000000000000000000000000000000006014906000191690557f64616f3a7370656369616c3a70726f706f73616c0000000000000000000000006015906000191690557f64616f3a7374616b652d6c6f636b696e670000000000000000000000000000006016906000191690557f64616f3a766f74696e67000000000000000000000000000000000000000000006017906000191690557f64616f3a766f74696e673a636c61696d730000000000000000000000000000006018906000191690557f64616f3a73766f74696e673a636c61696d7300000000000000000000000000006019906000191690557f64616f3a6964656e746974790000000000000000000000000000000000000000601a906000191690557f64616f3a726577617264732d6d616e6167657200000000000000000000000000601b906000191690557f64616f3a726577617264732d6578747261730000000000000000000000000000601c906000191690557f64616f3a726f6c65730000000000000000000000000000000000000000000000601d906000191690557f64616f3a66756e64696e672d6d616e6167657200000000000000000000000000601e906000191690557f64616f3a77686974656c697374696e6700000000000000000000000000000000601f906000191690557f64616f3a696e666f726d6174696f6e00000000000000000000000000000000006020906000191690557f736572766963653a726f6c6500000000000000000000000000000000000000006021906000191690557f736572766963653a64616f3a696e666f000000000000000000000000000000006022906000191690557f736572766963653a64616f3a6c697374696e67000000000000000000000000006023906000191690557f736572766963653a64616f3a63616c63756c61746f72000000000000000000006024906000191690557f73746f726167653a64616f0000000000000000000000000000000000000000006025906000191690557f73746f726167653a64616f3a636f756e746572000000000000000000000000006026906000191690557f73746f726167653a64616f3a75706772616465000000000000000000000000006027906000191690557f73746f726167653a64616f3a6964656e746974790000000000000000000000006028906000191690557f73746f726167653a64616f3a706f696e747300000000000000000000000000006029906000191690557f73746f726167653a64616f3a7370656369616c00000000000000000000000000602a906000191690557f73746f726167653a64616f3a636f6e6669670000000000000000000000000000602b906000191690557f73746f726167653a64616f3a7374616b65000000000000000000000000000000602c906000191690557f73746f726167653a64616f3a7265776172647300000000000000000000000000602d906000191690557f73746f726167653a64616f3a77686974656c697374696e670000000000000000602e906000191690557f73746f726167653a696e7465726d6564696174653a726573756c747300000000602f906000191690557f743a6467640000000000000000000000000000000000000000000000000000006030906000191690557f743a6467780000000000000000000000000000000000000000000000000000006031906000191690557f743a6261646765000000000000000000000000000000000000000000000000006032906000191690556001603360006101000a81548160ff021916908360ff1602179055506002603360016101000a81548160ff021916908360ff1602179055506003603360026101000a81548160ff021916908360ff1602179055506004603360036101000a81548160ff021916908360ff1602179055506276a7006034557f6d696e5f6467645f7061727469636970616e74000000000000000000000000006035906000191690557f6d696e5f6467645f6d6f64657261746f720000000000000000000000000000006036906000191690557f6d696e5f72657075746174696f6e5f6d6f64657261746f7200000000000000006037906000191690557f6c6f636b696e675f70686173655f6475726174696f6e000000000000000000006038906000191690557f717561727465725f6475726174696f6e000000000000000000000000000000006039906000191690557f766f74696e675f636f6d6d69745f706861736500000000000000000000000000603a906000191690557f766f74696e675f70686173655f746f74616c0000000000000000000000000000603b906000191690557f696e746572696d5f766f74696e675f636f6d6d69745f70686173650000000000603c906000191690557f696e746572696d5f766f74696e675f70686173655f746f74616c000000000000603d906000191690557f64726166745f71756f72756d5f66697865645f6e756d657261746f7200000000603e906000191690557f64726166745f71756f72756d5f66697865645f64656e6f6d696e61746f720000603f906000191690557f64726166745f71756f72756d5f73666163746f725f6e756d657261746f7200006040906000191690557f64726166745f71756f72756d5f73666163746f725f64656e6f6d696e61746f726041906000191690557f766f74655f71756f72756d5f66697865645f6e756d657261746f7200000000006042906000191690557f766f74655f71756f72756d5f66697865645f64656e6f6d696e61746f720000006043906000191690557f766f74655f71756f72756d5f73666163746f725f6e756d657261746f720000006044906000191690557f766f74655f71756f72756d5f73666163746f725f64656e6f6d696e61746f72006045906000191690557f66696e616c5f7265776172645f73666163746f725f6e756d657261746f7200006046906000191690557f66696e616c5f7265776172645f73666163746f725f64656e6f6d696e61746f726047906000191690557f64726166745f71756f74615f6e756d657261746f7200000000000000000000006048906000191690557f64726166745f71756f74615f64656e6f6d696e61746f720000000000000000006049906000191690557f766f74696e675f71756f74615f6e756d657261746f7200000000000000000000604a906000191690557f766f74696e675f71756f74615f64656e6f6d696e61746f720000000000000000604b906000191690557f6d696e696d616c5f717000000000000000000000000000000000000000000000604c906000191690557f717561727465725f706f696e745f7363616c696e675f666163746f7200000000604d906000191690557f7265705f706f696e745f7363616c696e675f666163746f720000000000000000604e906000191690557f6d696e696d616c5f6d6f645f7170000000000000000000000000000000000000604f906000191690557f6d6f645f71705f7363616c696e675f666163746f7200000000000000000000006050906000191690557f6d6f645f7265705f706f696e745f7363616c696e675f666163746f72000000006051906000191690557f717561727465725f706f696e745f64726166745f766f746500000000000000006052906000191690557f717561727465725f706f696e745f766f746500000000000000000000000000006053906000191690557f717561727465725f706f696e745f696e746572696d5f766f74650000000000006054906000191690557f715f705f6d696c6573746f6e655f636f6d706c6574696f6e00000000000000006055906000191690557f626f6e75735f72657075746174696f6e5f6e756d657261746f720000000000006056906000191690557f626f6e75735f72657075746174696f6e5f64656e6f6d696e61746f72000000006057906000191690557f7370656369616c5f70726f706f73616c5f636f6d6d69745f70686173650000006058906000191690557f7370656369616c5f70726f706f73616c5f70686173655f746f74616c000000006059906000191690557f636f6e6669675f7370656369616c5f71756f74615f6e756d657261746f720000605a906000191690557f636f6e6669675f7370656369616c5f71756f74615f64656e6f6d696e61746f72605b906000191690557f7370656369616c5f71756f72756d5f6e756d657261746f720000000000000000605c906000191690557f7370656369616c5f71756f72756d5f64656e6f6d696e61746f72000000000000605d906000191690557f636f6e6669675f6d61785f72657075746174696f6e5f646564756374696f6e00605e906000191690557f636f6e6669675f70756e6973686d656e745f6e6f745f6c6f636b696e67000000605f906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f6e756d00000000006060906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f64656e00000000006061906000191690557f636f6e6669675f6d61785f6d5f72705f646564756374696f6e000000000000006062906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f6e756d0000006063906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f64656e0000006064906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f6e756d000000000000000000006065906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f64656e000000000000000000006066906000191690557f636f6e6669675f64726166745f766f74696e675f7068617365000000000000006067906000191690557f636f6e6669675f72705f626f6f73745f7065725f6261646765000000000000006068906000191690557f636f6e6669675f636c61696d696e675f646561646c696e6500000000000000006069906000191690557f636f6e6669675f70726570726f706f73616c5f636f6c6c61746572616c000000606a906000191690557f636f6e6669675f6d61785f66756e64696e675f6e6f6e44696769780000000000606b906000191690557f636f6e6669675f6d61785f6d696c6573746f6e65735f6e6f6e44696769780000606c906000191690557f636f6e6669675f6e6f6e44696769785f70726f706f73616c5f63617000000000606d906000191690557f636f6e6669675f646561645f6475726174696f6e000000000000000000000000606e906000191690557f636f6e6669675f63765f72657075746174696f6e000000000000000000000000606f906000191690553480156200113457600080fd5b50604051602080620025378339810180604052810190808051906020019092919050505062001175601a5482620017af640100000000026401000000009004565b15156200118157600080fd5b6200119a62001a40640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff166327d00559603360019054906101000a900460ff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260ff168152602001807f666f756e64657273000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b1580156200124357600080fd5b505af115801562001258573d6000803e3d6000fd5b505050506040513d60208110156200126f57600080fd5b8101908080519060200190929190505050506200129a62001a40640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff166327d00559603360029054906101000a900460ff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260ff168152602001807f70726c7300000000000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b1580156200134357600080fd5b505af115801562001358573d6000803e3d6000fd5b505050506040513d60208110156200136f57600080fd5b8101908080519060200190929190505050506200139a62001a40640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff166327d00559603360039054906101000a900460ff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260ff168152602001807f6b796361646d696e730000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b1580156200144357600080fd5b505af115801562001458573d6000803e3d6000fd5b505050506040513d60208110156200146f57600080fd5b8101908080519060200190929190505050506200149a62001a40640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff16635dcea2cf603360019054906101000a900460ff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260ff168152602001807f666f756e646572735f67726f75700000000000000000000000000000000000008152506020016020019150506040805180830381600087803b1580156200154557600080fd5b505af11580156200155a573d6000803e3d6000fd5b505050506040513d60408110156200157157600080fd5b8101908080519060200190929190805190602001909291905050505050620015a762001a40640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff16635dcea2cf603360029054906101000a900460ff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260ff168152602001807f70726c735f67726f7570000000000000000000000000000000000000000000008152506020016020019150506040805180830381600087803b1580156200165257600080fd5b505af115801562001667573d6000803e3d6000fd5b505050506040513d60408110156200167e57600080fd5b8101908080519060200190929190805190602001909291905050505050620016b462001a40640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff16635dcea2cf603360039054906101000a900460ff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260ff168152602001807f6b796361646d696e735f67726f757000000000000000000000000000000000008152506020016020019150506040805180830381600087803b1580156200175f57600080fd5b505af115801562001774573d6000803e3d6000fd5b505050506040513d60408110156200178b57600080fd5b81019080805190602001909291908051906020019092919050505050505062001b42565b6000808273ffffffffffffffffffffffffffffffffffffffff16636d19a8826040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200181757600080fd5b505af11580156200182c573d6000803e3d6000fd5b505050506040513d60208110156200184357600080fd5b8101908080519060200190929190505050905060001515811515141562001a345730600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600181600019169055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0f6ef4a600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620019e157600080fd5b505af1158015620019f6573d6000803e3d6000fd5b505050506040513d602081101562001a0d57600080fd5b8101908080519060200190929190505050151562001a2a57600080fd5b6001915062001a39565b600091505b5092915050565b600062001a5e60285462001a63640100000000026401000000009004565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801562001afe57600080fd5b505af115801562001b13573d6000803e3d6000fd5b505050506040513d602081101562001b2a57600080fd5b81019080805190602001909291905050509050919050565b6109e58062001b526000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec146100885780633943380c146100df5780633f83acff14610112578063737988e314610183578063944ae971146101de578063c86ee92514610239578063db4ecbc11461027c575b600080fd5b34801561009457600080fd5b5061009d6102d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100eb57600080fd5b506100f46102f8565b60405180826000191660001916815260200191505060405180910390f35b34801561011e57600080fd5b5061014160048036038101908080356000191690602001909291905050506102fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561018f57600080fd5b506101dc60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506103da565b005b3480156101ea57600080fd5b50610237600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001909291905050506105d1565b005b34801561024557600080fd5b5061027a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a4565b005b34801561028857600080fd5b50610291610981565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b505050506040513d60208110156103c257600080fd5b81019080805190602001909291905050509050919050565b603360009054906101000a900460ff1660ff166103f56109a7565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561048f57600080fd5b505af11580156104a3573d6000803e3d6000fd5b505050506040513d60208110156104b957600080fd5b81019080805190602001909291905050501415156104d657600080fd5b6104de6109a7565b73ffffffffffffffffffffffffffffffffffffffff1663a04e0dce8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b15801561059057600080fd5b505af11580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b810190808051906020019092919050505050505050565b603360039054906101000a900460ff1660ff166105ec6109a7565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561068657600080fd5b505af115801561069a573d6000803e3d6000fd5b505050506040513d60208110156106b057600080fd5b81019080805190602001909291905050501415156106cd57600080fd5b6106d56109a7565b73ffffffffffffffffffffffffffffffffffffffff166307ded7c08484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050600060405180830381600087803b15801561078757600080fd5b505af115801561079b573d6000803e3d6000fd5b50505050505050565b603360009054906101000a900460ff1660ff166107bf6109a7565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b505050506040513d602081101561088357600080fd5b81019080805190602001909291905050501415156108a057600080fd5b6108a86109a7565b73ffffffffffffffffffffffffffffffffffffffff16638a05cbe6826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094257600080fd5b505af1158015610956573d6000803e3d6000fd5b505050506040513d602081101561096c57600080fd5b81019080805190602001909291905050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006109b46028546102fe565b9050905600a165627a7a72305820f028d4d29509a53d087727140d7d5d967fd738cb268ec49d2346506253a84cf40029",
  "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec146100885780633943380c146100df5780633f83acff14610112578063737988e314610183578063944ae971146101de578063c86ee92514610239578063db4ecbc11461027c575b600080fd5b34801561009457600080fd5b5061009d6102d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100eb57600080fd5b506100f46102f8565b60405180826000191660001916815260200191505060405180910390f35b34801561011e57600080fd5b5061014160048036038101908080356000191690602001909291905050506102fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561018f57600080fd5b506101dc60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506103da565b005b3480156101ea57600080fd5b50610237600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001909291905050506105d1565b005b34801561024557600080fd5b5061027a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a4565b005b34801561028857600080fd5b50610291610981565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b505050506040513d60208110156103c257600080fd5b81019080805190602001909291905050509050919050565b603360009054906101000a900460ff1660ff166103f56109a7565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561048f57600080fd5b505af11580156104a3573d6000803e3d6000fd5b505050506040513d60208110156104b957600080fd5b81019080805190602001909291905050501415156104d657600080fd5b6104de6109a7565b73ffffffffffffffffffffffffffffffffffffffff1663a04e0dce8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b15801561059057600080fd5b505af11580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b810190808051906020019092919050505050505050565b603360039054906101000a900460ff1660ff166105ec6109a7565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561068657600080fd5b505af115801561069a573d6000803e3d6000fd5b505050506040513d60208110156106b057600080fd5b81019080805190602001909291905050501415156106cd57600080fd5b6106d56109a7565b73ffffffffffffffffffffffffffffffffffffffff166307ded7c08484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050600060405180830381600087803b15801561078757600080fd5b505af115801561079b573d6000803e3d6000fd5b50505050505050565b603360009054906101000a900460ff1660ff166107bf6109a7565b73ffffffffffffffffffffffffffffffffffffffff1663c31d02b2336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b505050506040513d602081101561088357600080fd5b81019080805190602001909291905050501415156108a057600080fd5b6108a86109a7565b73ffffffffffffffffffffffffffffffffffffffff16638a05cbe6826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094257600080fd5b505af1158015610956573d6000803e3d6000fd5b505050506040513d602081101561096c57600080fd5b81019080805190602001909291905050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006109b46028546102fe565b9050905600a165627a7a72305820f028d4d29509a53d087727140d7d5d967fd738cb268ec49d2346506253a84cf40029",
  "sourceMap": "219:2498:10:-;;;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;;;;;;;;385:1046:10;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:1046:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:38;458:21;;481:9;453:4;;;:38;;;:::i;:::-;445:47;;;;;;;;955:18;:16;;;:18;;;:::i;:::-;:30;;;986:14;;;;;;;;;;;955:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;955:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;955:58:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;955:58:10;;;;;;;;;;;;;;;;;1023:18;:16;;;:18;;;:::i;:::-;:30;;;1054:10;;;;;;;;;;;1023:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1023:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1023:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1023:50:10;;;;;;;;;;;;;;;;;1083:18;:16;;;:18;;;:::i;:::-;:30;;;1114:16;;;;;;;;;;;1083:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1083:61:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1083:61:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1083:61:10;;;;;;;;;;;;;;;;;1154:18;:16;;;:18;;;:::i;:::-;:31;;;1186:14;;;;;;;;;;;1154:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1154:69:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1154:69:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1154:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;1249:18;:16;;;:18;;;:::i;:::-;:31;;;1281:10;;;;;;;;;;;1249:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1249:61:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1249:61:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1249:61:10;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:18;:16;;;:18;;;:::i;:::-;:31;;;1368:16;;;;;;;;;;;1336:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1336:72:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1336:72:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1336:72:10;;;;;;;;;;;;;;;;;;;;;;;;;;;385:1046;219:2498;;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;899:201:7:-;974:28;1049:43;1062:29;;1049:12;;;:43;;;:::i;:::-;1018:75;;899:201;:::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;219:2498:10:-;;;;;;;",
  "deployedSourceMap": "219:2498:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:23:67;;;;;;;;;;;;;;;;;;;;;;;;;;;264:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:18:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:179:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:191:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1700:191:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2526:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2526:189:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2064:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2064:144:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:31:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:31:67;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23;;;;;;;;;;;;;:::o;264:18::-;;;;:::o;2380:179::-;2470:17;2526:8;;;;;;;;;;;2509:39;;;2549:4;2509:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:45:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:45:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:45:67;;;;;;;;;;;;;;;;2497:57;;2380:179;;;:::o;1700:191:10:-;337:10:7;;;;;;;;;;;285:62;;:18;:16;:18::i;:::-;:36;;;322:10;285:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;285:48:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;285:48:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;285:48:7;;;;;;;;;;;;;;;;:62;277:71;;;;;;;;1817:18:10;:16;:18::i;:::-;:43;;;1861:9;1872:5;1879:4;1817:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1817:67:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1817:67:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1817:67:10;;;;;;;;;;;;;;;;;1700:191;;;:::o;2526:189::-;858:16:7;;;;;;;;;;;806:68;;:18;:16;:18::i;:::-;:36;;;843:10;806:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;806:48:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;806:48:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;806:48:7;;;;;;;;;;;;;;;;:68;798:77;;;;;;;;2650:18:10;:16;:18::i;:::-;:29;;;2680:5;2687:4;2693:14;2650:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2650:58:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2650:58:10;;;;2526:189;;;:::o;2064:144::-;337:10:7;;;;;;;;;;;285:62;;:18;:16;:18::i;:::-;:36;;;322:10;285:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;285:48:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;285:48:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;285:48:7;;;;;;;;;;;;;;;;:62;277:71;;;;;;;;2151:18:10;:16;:18::i;:::-;:43;;;2195:5;2151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2151:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2151:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2151:50:10;;;;;;;;;;;;;;;;;2064:144;:::o;344:31:67:-;;;;;;;;;;;;;:::o;899:201:7:-;974:28;1049:43;1062:29;;1049:12;:43::i;:::-;1018:75;;899:201;:::o",
  "source": "pragma solidity ^0.4.25;\n\nimport \"../storage/DaoIdentityStorage.sol\";\nimport \"../common/IdentityCommon.sol\";\n\n\n/**\n@title Contract to manage the admin roles in DAO (founders, prls, kyc admins)\n@author Digix Holdings\n*/\ncontract DaoIdentity is IdentityCommon {\n\n    /**\n    @notice Constructor (create initial roles, groups)\n    @param _resolver Address of Contract Resolver\n    */\n    constructor(address _resolver)\n        public\n    {\n        require(init(CONTRACT_DAO_IDENTITY, _resolver));\n        // create the three roles and the three corresponding groups\n        // the root role, and root group are already created, with only the contract deployer in it\n        // After deployment, the contract deployer will call addGroupUser to add a multi-sig to be another root\n        // The multi-sig will then call removeGroupUser to remove the contract deployer from root role\n        // From then on, the multi-sig will be the only root account\n        identity_storage().create_role(ROLES_FOUNDERS, \"founders\");\n        identity_storage().create_role(ROLES_PRLS, \"prls\");\n        identity_storage().create_role(ROLES_KYC_ADMINS, \"kycadmins\");\n        identity_storage().create_group(ROLES_FOUNDERS, \"founders_group\", \"\"); // group_id = 2\n        identity_storage().create_group(ROLES_PRLS, \"prls_group\", \"\"); // group_id = 3\n        identity_storage().create_group(ROLES_KYC_ADMINS, \"kycadmins_group\", \"\"); // group_id = 4\n    }\n\n    /**\n    @notice Function to add an address to a group (only root can call this function)\n    @param _group_id ID of the group to be added in\n    @param _user Ethereum address of the user\n    @param _doc hash of IPFS doc containing details of this user\n    */\n    function addGroupUser(uint256 _group_id, address _user, bytes32 _doc)\n        public\n        if_root()\n    {\n        identity_storage().update_add_user_to_group(_group_id, _user, _doc);\n    }\n\n    /**\n    @notice Function to remove a user from group (only root can call this)\n    @param _user Ethereum address of the user to be removed from their group\n    */\n    function removeGroupUser(address _user)\n        public\n        if_root()\n    {\n        identity_storage().update_remove_group_user(_user);\n    }\n\n    /**\n    @notice Function to update the KYC data of user (expiry data of valid KYC) (can only be called by the KYC ADMIN role)\n    @param _user Ethereum address of the user\n    @param _doc hash of the IPFS doc containing kyc information about this user\n    @param _id_expiration expiry date of the KYC\n    */\n    function updateKyc(address _user, bytes32 _doc, uint256 _id_expiration)\n        public\n        if_kyc_admin()\n    {\n        identity_storage().update_kyc(_user, _doc, _id_expiration);\n    }\n}\n",
  "sourcePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoIdentity.sol",
  "ast": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoIdentity.sol",
    "exportedSymbols": {
      "DaoIdentity": [
        3309
      ]
    },
    "id": 3310,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3192,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:10"
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoIdentityStorage.sol",
        "file": "../storage/DaoIdentityStorage.sol",
        "id": 3193,
        "nodeType": "ImportDirective",
        "scope": 3310,
        "sourceUnit": 14084,
        "src": "26:43:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/IdentityCommon.sol",
        "file": "../common/IdentityCommon.sol",
        "id": 3194,
        "nodeType": "ImportDirective",
        "scope": 3310,
        "sourceUnit": 1961,
        "src": "70:38:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3195,
              "name": "IdentityCommon",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1960,
              "src": "243:14:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IdentityCommon_$1960",
                "typeString": "contract IdentityCommon"
              }
            },
            "id": 3196,
            "nodeType": "InheritanceSpecifier",
            "src": "243:14:10"
          }
        ],
        "contractDependencies": [
          1629,
          1868,
          1960,
          18628
        ],
        "contractKind": "contract",
        "documentation": "@title Contract to manage the admin roles in DAO (founders, prls, kyc admins)\n@author Digix Holdings",
        "fullyImplemented": true,
        "id": 3309,
        "linearizedBaseContracts": [
          3309,
          1960,
          1868,
          1629,
          18628
        ],
        "name": "DaoIdentity",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3253,
              "nodeType": "Block",
              "src": "435:996:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3203,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "458:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3204,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3198,
                            "src": "481:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3202,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "453:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 3205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "453:38:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3201,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "445:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "445:47:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3207,
                  "nodeType": "ExpressionStatement",
                  "src": "445:47:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3211,
                        "name": "ROLES_FOUNDERS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1442,
                        "src": "986:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "666f756e64657273",
                        "id": 3212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1002:10:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6bf477f07566f2ef1d2b482dc8e61b592d5ab4af89d7a659adbabf5e9ced29ec",
                          "typeString": "literal_string \"founders\""
                        },
                        "value": "founders"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6bf477f07566f2ef1d2b482dc8e61b592d5ab4af89d7a659adbabf5e9ced29ec",
                          "typeString": "literal_string \"founders\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3208,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "955:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "955:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13950,
                      "src": "955:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "955:58:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3214,
                  "nodeType": "ExpressionStatement",
                  "src": "955:58:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3218,
                        "name": "ROLES_PRLS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1445,
                        "src": "1054:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726c73",
                        "id": 3219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1066:6:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c74655e71a988f9ac055b89b40a1936c7a91c2e30c1acb10db41f6aa3da3f040",
                          "typeString": "literal_string \"prls\""
                        },
                        "value": "prls"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c74655e71a988f9ac055b89b40a1936c7a91c2e30c1acb10db41f6aa3da3f040",
                          "typeString": "literal_string \"prls\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3215,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1023:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1023:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13950,
                      "src": "1023:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1023:50:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3221,
                  "nodeType": "ExpressionStatement",
                  "src": "1023:50:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3225,
                        "name": "ROLES_KYC_ADMINS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1448,
                        "src": "1114:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6b796361646d696e73",
                        "id": 3226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1132:11:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_690b7a708e61c9da06056ebafe9cfb66a5cc4f1700ab321738e361b1a8d4fd9c",
                          "typeString": "literal_string \"kycadmins\""
                        },
                        "value": "kycadmins"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_690b7a708e61c9da06056ebafe9cfb66a5cc4f1700ab321738e361b1a8d4fd9c",
                          "typeString": "literal_string \"kycadmins\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3222,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1083:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1083:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13950,
                      "src": "1083:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1083:61:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3228,
                  "nodeType": "ExpressionStatement",
                  "src": "1083:61:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3232,
                        "name": "ROLES_FOUNDERS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1442,
                        "src": "1186:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "666f756e646572735f67726f7570",
                        "id": 3233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1202:16:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d48abbb7f4e720a8178fa337edb5d65f850fca2e4101e282eddcdb4eb2b4dccb",
                          "typeString": "literal_string \"founders_group\""
                        },
                        "value": "founders_group"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1220:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d48abbb7f4e720a8178fa337edb5d65f850fca2e4101e282eddcdb4eb2b4dccb",
                          "typeString": "literal_string \"founders_group\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3229,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1154:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1154:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13923,
                      "src": "1154:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (uint256,bytes32,bytes32) external returns (bool,uint256)"
                      }
                    },
                    "id": 3235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1154:69:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3236,
                  "nodeType": "ExpressionStatement",
                  "src": "1154:69:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3240,
                        "name": "ROLES_PRLS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1445,
                        "src": "1281:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726c735f67726f7570",
                        "id": 3241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1293:12:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_860478588436fbb3222ec58f54f7c49e03f116ed9d4e3a29d025a55794d22da9",
                          "typeString": "literal_string \"prls_group\""
                        },
                        "value": "prls_group"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1307:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_860478588436fbb3222ec58f54f7c49e03f116ed9d4e3a29d025a55794d22da9",
                          "typeString": "literal_string \"prls_group\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3237,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1249:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1249:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13923,
                      "src": "1249:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (uint256,bytes32,bytes32) external returns (bool,uint256)"
                      }
                    },
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1249:61:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3244,
                  "nodeType": "ExpressionStatement",
                  "src": "1249:61:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3248,
                        "name": "ROLES_KYC_ADMINS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1448,
                        "src": "1368:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6b796361646d696e735f67726f7570",
                        "id": 3249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1386:17:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dad3c872afc291d02bd7da571de02bcd822ef45ac74d25b66e4da83ab5138273",
                          "typeString": "literal_string \"kycadmins_group\""
                        },
                        "value": "kycadmins_group"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1405:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dad3c872afc291d02bd7da571de02bcd822ef45ac74d25b66e4da83ab5138273",
                          "typeString": "literal_string \"kycadmins_group\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3245,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1336:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1336:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13923,
                      "src": "1336:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (uint256,bytes32,bytes32) external returns (bool,uint256)"
                      }
                    },
                    "id": 3251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1336:72:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3252,
                  "nodeType": "ExpressionStatement",
                  "src": "1336:72:10"
                }
              ]
            },
            "documentation": "@notice Constructor (create initial roles, groups)\n@param _resolver Address of Contract Resolver",
            "id": 3254,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3198,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 3254,
                  "src": "397:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3197,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "397:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "396:19:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3200,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "435:0:10"
            },
            "scope": 3309,
            "src": "385:1046:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3273,
              "nodeType": "Block",
              "src": "1807:84:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3268,
                        "name": "_group_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3256,
                        "src": "1861:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3269,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3258,
                        "src": "1872:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3270,
                        "name": "_doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3260,
                        "src": "1879:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3265,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1817:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1817:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "update_add_user_to_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13980,
                      "src": "1817:43:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,address,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1817:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3272,
                  "nodeType": "ExpressionStatement",
                  "src": "1817:67:10"
                }
              ]
            },
            "documentation": "@notice Function to add an address to a group (only root can call this function)\n@param _group_id ID of the group to be added in\n@param _user Ethereum address of the user\n@param _doc hash of IPFS doc containing details of this user",
            "id": 3274,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 3263,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3262,
                  "name": "if_root",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1889,
                  "src": "1793:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1793:9:10"
              }
            ],
            "name": "addGroupUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3256,
                  "name": "_group_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3274,
                  "src": "1722:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3255,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1722:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3258,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3274,
                  "src": "1741:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3257,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1741:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3260,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 3274,
                  "src": "1756:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3259,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1721:48:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3264,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1807:0:10"
            },
            "scope": 3309,
            "src": "1700:191:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3287,
              "nodeType": "Block",
              "src": "2141:67:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3284,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3276,
                        "src": "2195:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3281,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "2151:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2151:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "update_remove_group_user",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14004,
                      "src": "2151:43:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) external returns (bool)"
                      }
                    },
                    "id": 3285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2151:50:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3286,
                  "nodeType": "ExpressionStatement",
                  "src": "2151:50:10"
                }
              ]
            },
            "documentation": "@notice Function to remove a user from group (only root can call this)\n@param _user Ethereum address of the user to be removed from their group",
            "id": 3288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 3279,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3278,
                  "name": "if_root",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1889,
                  "src": "2127:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2127:9:10"
              }
            ],
            "name": "removeGroupUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3276,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "2089:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3275,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2089:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2088:15:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3280,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2141:0:10"
            },
            "scope": 3309,
            "src": "2064:144:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3307,
              "nodeType": "Block",
              "src": "2640:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3302,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3290,
                        "src": "2680:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3303,
                        "name": "_doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3292,
                        "src": "2687:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3304,
                        "name": "_id_expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3294,
                        "src": "2693:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3299,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "2650:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2650:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "update_kyc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14034,
                      "src": "2650:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256) external"
                      }
                    },
                    "id": 3305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2650:58:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3306,
                  "nodeType": "ExpressionStatement",
                  "src": "2650:58:10"
                }
              ]
            },
            "documentation": "@notice Function to update the KYC data of user (expiry data of valid KYC) (can only be called by the KYC ADMIN role)\n@param _user Ethereum address of the user\n@param _doc hash of the IPFS doc containing kyc information about this user\n@param _id_expiration expiry date of the KYC",
            "id": 3308,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 3297,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3296,
                  "name": "if_kyc_admin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1945,
                  "src": "2621:12:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2621:14:10"
              }
            ],
            "name": "updateKyc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3290,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3308,
                  "src": "2545:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2545:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3292,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 3308,
                  "src": "2560:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3291,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2560:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3294,
                  "name": "_id_expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 3308,
                  "src": "2574:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3293,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2574:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2544:53:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3298,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2640:0:10"
            },
            "scope": 3309,
            "src": "2526:189:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3310,
        "src": "219:2498:10"
      }
    ],
    "src": "0:2718:10"
  },
  "legacyAST": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/interactive/DaoIdentity.sol",
    "exportedSymbols": {
      "DaoIdentity": [
        3309
      ]
    },
    "id": 3310,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3192,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:10"
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoIdentityStorage.sol",
        "file": "../storage/DaoIdentityStorage.sol",
        "id": 3193,
        "nodeType": "ImportDirective",
        "scope": 3310,
        "sourceUnit": 14084,
        "src": "26:43:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/IdentityCommon.sol",
        "file": "../common/IdentityCommon.sol",
        "id": 3194,
        "nodeType": "ImportDirective",
        "scope": 3310,
        "sourceUnit": 1961,
        "src": "70:38:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3195,
              "name": "IdentityCommon",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1960,
              "src": "243:14:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IdentityCommon_$1960",
                "typeString": "contract IdentityCommon"
              }
            },
            "id": 3196,
            "nodeType": "InheritanceSpecifier",
            "src": "243:14:10"
          }
        ],
        "contractDependencies": [
          1629,
          1868,
          1960,
          18628
        ],
        "contractKind": "contract",
        "documentation": "@title Contract to manage the admin roles in DAO (founders, prls, kyc admins)\n@author Digix Holdings",
        "fullyImplemented": true,
        "id": 3309,
        "linearizedBaseContracts": [
          3309,
          1960,
          1868,
          1629,
          18628
        ],
        "name": "DaoIdentity",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3253,
              "nodeType": "Block",
              "src": "435:996:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3203,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "458:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3204,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3198,
                            "src": "481:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3202,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "453:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 3205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "453:38:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3201,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "445:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "445:47:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3207,
                  "nodeType": "ExpressionStatement",
                  "src": "445:47:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3211,
                        "name": "ROLES_FOUNDERS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1442,
                        "src": "986:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "666f756e64657273",
                        "id": 3212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1002:10:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6bf477f07566f2ef1d2b482dc8e61b592d5ab4af89d7a659adbabf5e9ced29ec",
                          "typeString": "literal_string \"founders\""
                        },
                        "value": "founders"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6bf477f07566f2ef1d2b482dc8e61b592d5ab4af89d7a659adbabf5e9ced29ec",
                          "typeString": "literal_string \"founders\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3208,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "955:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "955:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13950,
                      "src": "955:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "955:58:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3214,
                  "nodeType": "ExpressionStatement",
                  "src": "955:58:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3218,
                        "name": "ROLES_PRLS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1445,
                        "src": "1054:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726c73",
                        "id": 3219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1066:6:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c74655e71a988f9ac055b89b40a1936c7a91c2e30c1acb10db41f6aa3da3f040",
                          "typeString": "literal_string \"prls\""
                        },
                        "value": "prls"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c74655e71a988f9ac055b89b40a1936c7a91c2e30c1acb10db41f6aa3da3f040",
                          "typeString": "literal_string \"prls\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3215,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1023:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1023:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13950,
                      "src": "1023:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1023:50:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3221,
                  "nodeType": "ExpressionStatement",
                  "src": "1023:50:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3225,
                        "name": "ROLES_KYC_ADMINS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1448,
                        "src": "1114:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6b796361646d696e73",
                        "id": 3226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1132:11:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_690b7a708e61c9da06056ebafe9cfb66a5cc4f1700ab321738e361b1a8d4fd9c",
                          "typeString": "literal_string \"kycadmins\""
                        },
                        "value": "kycadmins"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_690b7a708e61c9da06056ebafe9cfb66a5cc4f1700ab321738e361b1a8d4fd9c",
                          "typeString": "literal_string \"kycadmins\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3222,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1083:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1083:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13950,
                      "src": "1083:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1083:61:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3228,
                  "nodeType": "ExpressionStatement",
                  "src": "1083:61:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3232,
                        "name": "ROLES_FOUNDERS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1442,
                        "src": "1186:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "666f756e646572735f67726f7570",
                        "id": 3233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1202:16:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d48abbb7f4e720a8178fa337edb5d65f850fca2e4101e282eddcdb4eb2b4dccb",
                          "typeString": "literal_string \"founders_group\""
                        },
                        "value": "founders_group"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1220:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d48abbb7f4e720a8178fa337edb5d65f850fca2e4101e282eddcdb4eb2b4dccb",
                          "typeString": "literal_string \"founders_group\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3229,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1154:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1154:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13923,
                      "src": "1154:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (uint256,bytes32,bytes32) external returns (bool,uint256)"
                      }
                    },
                    "id": 3235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1154:69:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3236,
                  "nodeType": "ExpressionStatement",
                  "src": "1154:69:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3240,
                        "name": "ROLES_PRLS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1445,
                        "src": "1281:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726c735f67726f7570",
                        "id": 3241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1293:12:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_860478588436fbb3222ec58f54f7c49e03f116ed9d4e3a29d025a55794d22da9",
                          "typeString": "literal_string \"prls_group\""
                        },
                        "value": "prls_group"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1307:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_860478588436fbb3222ec58f54f7c49e03f116ed9d4e3a29d025a55794d22da9",
                          "typeString": "literal_string \"prls_group\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3237,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1249:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1249:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13923,
                      "src": "1249:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (uint256,bytes32,bytes32) external returns (bool,uint256)"
                      }
                    },
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1249:61:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3244,
                  "nodeType": "ExpressionStatement",
                  "src": "1249:61:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3248,
                        "name": "ROLES_KYC_ADMINS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1448,
                        "src": "1368:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6b796361646d696e735f67726f7570",
                        "id": 3249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1386:17:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dad3c872afc291d02bd7da571de02bcd822ef45ac74d25b66e4da83ab5138273",
                          "typeString": "literal_string \"kycadmins_group\""
                        },
                        "value": "kycadmins_group"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1405:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dad3c872afc291d02bd7da571de02bcd822ef45ac74d25b66e4da83ab5138273",
                          "typeString": "literal_string \"kycadmins_group\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3245,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1336:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1336:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "create_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13923,
                      "src": "1336:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                        "typeString": "function (uint256,bytes32,bytes32) external returns (bool,uint256)"
                      }
                    },
                    "id": 3251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1336:72:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                      "typeString": "tuple(bool,uint256)"
                    }
                  },
                  "id": 3252,
                  "nodeType": "ExpressionStatement",
                  "src": "1336:72:10"
                }
              ]
            },
            "documentation": "@notice Constructor (create initial roles, groups)\n@param _resolver Address of Contract Resolver",
            "id": 3254,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3198,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 3254,
                  "src": "397:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3197,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "397:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "396:19:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3200,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "435:0:10"
            },
            "scope": 3309,
            "src": "385:1046:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3273,
              "nodeType": "Block",
              "src": "1807:84:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3268,
                        "name": "_group_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3256,
                        "src": "1861:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3269,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3258,
                        "src": "1872:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3270,
                        "name": "_doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3260,
                        "src": "1879:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3265,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "1817:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1817:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "update_add_user_to_group",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13980,
                      "src": "1817:43:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (uint256,address,bytes32) external returns (bool)"
                      }
                    },
                    "id": 3271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1817:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3272,
                  "nodeType": "ExpressionStatement",
                  "src": "1817:67:10"
                }
              ]
            },
            "documentation": "@notice Function to add an address to a group (only root can call this function)\n@param _group_id ID of the group to be added in\n@param _user Ethereum address of the user\n@param _doc hash of IPFS doc containing details of this user",
            "id": 3274,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 3263,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3262,
                  "name": "if_root",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1889,
                  "src": "1793:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1793:9:10"
              }
            ],
            "name": "addGroupUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3256,
                  "name": "_group_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3274,
                  "src": "1722:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3255,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1722:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3258,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3274,
                  "src": "1741:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3257,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1741:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3260,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 3274,
                  "src": "1756:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3259,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1721:48:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3264,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1807:0:10"
            },
            "scope": 3309,
            "src": "1700:191:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3287,
              "nodeType": "Block",
              "src": "2141:67:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3284,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3276,
                        "src": "2195:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3281,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "2151:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2151:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "update_remove_group_user",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14004,
                      "src": "2151:43:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) external returns (bool)"
                      }
                    },
                    "id": 3285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2151:50:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3286,
                  "nodeType": "ExpressionStatement",
                  "src": "2151:50:10"
                }
              ]
            },
            "documentation": "@notice Function to remove a user from group (only root can call this)\n@param _user Ethereum address of the user to be removed from their group",
            "id": 3288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 3279,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3278,
                  "name": "if_root",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1889,
                  "src": "2127:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2127:9:10"
              }
            ],
            "name": "removeGroupUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3276,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3288,
                  "src": "2089:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3275,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2089:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2088:15:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3280,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2141:0:10"
            },
            "scope": 3309,
            "src": "2064:144:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3307,
              "nodeType": "Block",
              "src": "2640:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3302,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3290,
                        "src": "2680:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3303,
                        "name": "_doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3292,
                        "src": "2687:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3304,
                        "name": "_id_expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3294,
                        "src": "2693:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3299,
                          "name": "identity_storage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1959,
                          "src": "2650:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_DaoIdentityStorage_$14083_$",
                            "typeString": "function () view returns (contract DaoIdentityStorage)"
                          }
                        },
                        "id": 3300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2650:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DaoIdentityStorage_$14083",
                          "typeString": "contract DaoIdentityStorage"
                        }
                      },
                      "id": 3301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "update_kyc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14034,
                      "src": "2650:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256) external"
                      }
                    },
                    "id": 3305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2650:58:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3306,
                  "nodeType": "ExpressionStatement",
                  "src": "2650:58:10"
                }
              ]
            },
            "documentation": "@notice Function to update the KYC data of user (expiry data of valid KYC) (can only be called by the KYC ADMIN role)\n@param _user Ethereum address of the user\n@param _doc hash of the IPFS doc containing kyc information about this user\n@param _id_expiration expiry date of the KYC",
            "id": 3308,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 3297,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3296,
                  "name": "if_kyc_admin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1945,
                  "src": "2621:12:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2621:14:10"
              }
            ],
            "name": "updateKyc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3290,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3308,
                  "src": "2545:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2545:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3292,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 3308,
                  "src": "2560:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3291,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2560:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3294,
                  "name": "_id_expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 3308,
                  "src": "2574:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3293,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2574:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2544:53:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3298,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2640:0:10"
            },
            "scope": 3309,
            "src": "2526:189:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3310,
        "src": "219:2498:10"
      }
    ],
    "src": "0:2718:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {},
      "links": {},
      "address": "0x62a776bc66e746deeea5aa61dcf9cbdd59363fd8",
      "transactionHash": "0xfad9a8937371181916c1f974cf0ca592db1248ea474b9c430885528c40bbe6a8"
    }
  },
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-16T08:53:49.647Z"
}