{
  "contractName": "DAOFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "baseACL",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "regFactory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "baseKernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_baseKernel",
          "type": "address"
        },
        {
          "name": "_baseACL",
          "type": "address"
        },
        {
          "name": "_regFactory",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "dao",
          "type": "address"
        }
      ],
      "name": "DeployDAO",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "reg",
          "type": "address"
        }
      ],
      "name": "DeployEVMScriptRegistry",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_root",
          "type": "address"
        }
      ],
      "name": "newDAO",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405160608061107d833981016040908152815160208301519190920151600160a060020a0381161561005a5760028054600160a060020a031916600160a060020a0383161790555b5060008054600160a060020a03938416600160a060020a03199182161790915560018054929093169116179055610fe7806100966000396000f3006080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663086b339e811461006657806321687444146100a4578063656362b5146100d2578063b16dd130146100e7575b600080fd5b34801561007257600080fd5b5061007b6100fc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100b057600080fd5b5061007b73ffffffffffffffffffffffffffffffffffffffff60043516610118565b3480156100de57600080fd5b5061007b610a95565b3480156100f357600080fd5b5061007b610ab1565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600080548190819081908190819073ffffffffffffffffffffffffffffffffffffffff16610144610acd565b73ffffffffffffffffffffffffffffffffffffffff909116815260405190819003602001906000f08015801561017e573d6000803e3d6000fd5b5060025490955073ffffffffffffffffffffffffffffffffffffffff16151561023a57600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152898316602482015290519187169163485cc9559160448082019260009290919082900301818387803b15801561021d57600080fd5b505af1158015610231573d6000803e3d6000fd5b50505050610a41565b600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015230602482015290519187169163485cc9559160448082019260009290919082900301818387803b1580156102b457600080fd5b505af11580156102c8573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561033057600080fd5b505af1158015610344573d6000803e3d6000fd5b505050506040513d602081101561035a57600080fd5b5051604080517f3d6ab68f000000000000000000000000000000000000000000000000000000008152905191955073ffffffffffffffffffffffffffffffffffffffff861691633d6ab68f916004808201926020929091908290030181600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b505050506040513d60208110156103f257600080fd5b5051604080517f8ea8dc9d000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff871691638ea8dc9d916004808201926020929091908290030181600087803b15801561046057600080fd5b505af1158015610474573d6000803e3d6000fd5b505050506040513d602081101561048a57600080fd5b5051600254604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529187166024830181905260448301879052905192945091630a8ed3db9160648082019260009290919082900301818387803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b5050600254604080517fbe03847800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201528983166024820152604481018790523060648201529051918816935063be038478925060848082019260009290919082900301818387803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b5050600254604080517f3340414300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015291519190921693506333404143925060248083019260209291908290030181600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507f1a40224412580c1ae5a2fbe8029a565f49a3a029608a8fd9320b32477f314579919081900360200190a1600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152878316602482015260448101859052905191861691639d0effdb9160648082019260009290919082900301818387803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b5050604080517fa885508a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018790529151918816935063a885508a925060448082019260009290919082900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b5050600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015291881660248301819052604483018890529051909350639d0effdb9250606480830192600092919082900301818387803b15801561086557600080fd5b505af1158015610879573d6000803e3d6000fd5b5050604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff881660248201819052604482018890529151919350639d0effdb925060648082019260009290919082900301818387803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b5050604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152881660248201819052604482018890529151919350630a8ed3db925060648082019260009290919082900301818387803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b5050604080517fafd925df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015288166024820181905260448201889052915191935063afd925df925060648082019260009290919082900301818387803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff8716815290517f3a7eb042a769adf51e9be78b68ed7af0ad7b379246536efc376ed2ca012382829181900360200190a1509295945050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6040516104de80610ade833901905600608060405234801561001057600080fd5b506040516020806104de833981016040525161003481640100000000610120810204565b151561003f57600080fd5b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c60008190527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f60209081527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede48054600160a060020a031916600160a060020a03851690811790915560408051918252517fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b23928290030190a35061014d565b600080600160a060020a038316151561013c5760009150610147565b823b90506000811191505b50919050565b6103828061015c6000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b5780634558850c1461015257806348a0c8dd146101965780635c60da1b146101bf57806386070cfe146101d4575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e9565b9050610126816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061026c945050505050565b505050005b34801561013757600080fd5b506101406102ad565b60408051918252519081900360200190f35b34801561015e57600080fd5b5061016d6004356024356102b2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a257600080fd5b506101ab6102e2565b604080519115158252519081900360200190f35b3480156101cb57600080fd5b5061016d6101e9565b3480156101e057600080fd5b50610140610312565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6000527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f6020527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede45473ffffffffffffffffffffffffffffffffffffffff1690565b600061027783610318565b151561028257600080fd5b612710905060008083516020850186855a03f43d604051816000823e8280156102a9578282f35b8282fd5b600290565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600061030d7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea610352565b905090565b60015481565b60008073ffffffffffffffffffffffffffffffffffffffff83161515610341576000915061034c565b823b90506000811191505b50919050565b54905600a165627a7a7230582005a1e02182395229234e7c1f5f8f78ac5043605628b961154e417e50f0489ea00029a165627a7a723058200f09aa9586790d1ba776fe3a9e2cf9b4b50b18be202877108c81f27ecb3263c10029",
  "deployedBytecode": "0x6080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663086b339e811461006657806321687444146100a4578063656362b5146100d2578063b16dd130146100e7575b600080fd5b34801561007257600080fd5b5061007b6100fc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100b057600080fd5b5061007b73ffffffffffffffffffffffffffffffffffffffff60043516610118565b3480156100de57600080fd5b5061007b610a95565b3480156100f357600080fd5b5061007b610ab1565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600080548190819081908190819073ffffffffffffffffffffffffffffffffffffffff16610144610acd565b73ffffffffffffffffffffffffffffffffffffffff909116815260405190819003602001906000f08015801561017e573d6000803e3d6000fd5b5060025490955073ffffffffffffffffffffffffffffffffffffffff16151561023a57600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152898316602482015290519187169163485cc9559160448082019260009290919082900301818387803b15801561021d57600080fd5b505af1158015610231573d6000803e3d6000fd5b50505050610a41565b600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015230602482015290519187169163485cc9559160448082019260009290919082900301818387803b1580156102b457600080fd5b505af11580156102c8573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561033057600080fd5b505af1158015610344573d6000803e3d6000fd5b505050506040513d602081101561035a57600080fd5b5051604080517f3d6ab68f000000000000000000000000000000000000000000000000000000008152905191955073ffffffffffffffffffffffffffffffffffffffff861691633d6ab68f916004808201926020929091908290030181600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b505050506040513d60208110156103f257600080fd5b5051604080517f8ea8dc9d000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff871691638ea8dc9d916004808201926020929091908290030181600087803b15801561046057600080fd5b505af1158015610474573d6000803e3d6000fd5b505050506040513d602081101561048a57600080fd5b5051600254604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529187166024830181905260448301879052905192945091630a8ed3db9160648082019260009290919082900301818387803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b5050600254604080517fbe03847800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201528983166024820152604481018790523060648201529051918816935063be038478925060848082019260009290919082900301818387803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b5050600254604080517f3340414300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015291519190921693506333404143925060248083019260209291908290030181600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507f1a40224412580c1ae5a2fbe8029a565f49a3a029608a8fd9320b32477f314579919081900360200190a1600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152878316602482015260448101859052905191861691639d0effdb9160648082019260009290919082900301818387803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b5050604080517fa885508a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018790529151918816935063a885508a925060448082019260009290919082900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b5050600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015291881660248301819052604483018890529051909350639d0effdb9250606480830192600092919082900301818387803b15801561086557600080fd5b505af1158015610879573d6000803e3d6000fd5b5050604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff881660248201819052604482018890529151919350639d0effdb925060648082019260009290919082900301818387803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b5050604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152881660248201819052604482018890529151919350630a8ed3db925060648082019260009290919082900301818387803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b5050604080517fafd925df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015288166024820181905260448201889052915191935063afd925df925060648082019260009290919082900301818387803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff8716815290517f3a7eb042a769adf51e9be78b68ed7af0ad7b379246536efc376ed2ca012382829181900360200190a1509295945050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6040516104de80610ade833901905600608060405234801561001057600080fd5b506040516020806104de833981016040525161003481640100000000610120810204565b151561003f57600080fd5b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c60008190527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f60209081527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede48054600160a060020a031916600160a060020a03851690811790915560408051918252517fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b23928290030190a35061014d565b600080600160a060020a038316151561013c5760009150610147565b823b90506000811191505b50919050565b6103828061015c6000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b5780634558850c1461015257806348a0c8dd146101965780635c60da1b146101bf57806386070cfe146101d4575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e9565b9050610126816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061026c945050505050565b505050005b34801561013757600080fd5b506101406102ad565b60408051918252519081900360200190f35b34801561015e57600080fd5b5061016d6004356024356102b2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a257600080fd5b506101ab6102e2565b604080519115158252519081900360200190f35b3480156101cb57600080fd5b5061016d6101e9565b3480156101e057600080fd5b50610140610312565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6000527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f6020527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede45473ffffffffffffffffffffffffffffffffffffffff1690565b600061027783610318565b151561028257600080fd5b612710905060008083516020850186855a03f43d604051816000823e8280156102a9578282f35b8282fd5b600290565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600061030d7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea610352565b905090565b60015481565b60008073ffffffffffffffffffffffffffffffffffffffff83161515610341576000915061034c565b823b90506000811191505b50919050565b54905600a165627a7a7230582005a1e02182395229234e7c1f5f8f78ac5043605628b961154e417e50f0489ea00029a165627a7a723058200f09aa9586790d1ba776fe3a9e2cf9b4b50b18be202877108c81f27ecb3263c10029",
  "sourceMap": "220:2369:49:-;;;744:324;8:9:-1;5:2;;;30:1;27;20:12;5:2;744:324:49;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;914:34:49;;;910:89;;964:10;:24;;-1:-1:-1;;;;;;964:24:49;-1:-1:-1;;;;;964:24:49;;;;;910:89;-1:-1:-1;1009:10:49;:24;;-1:-1:-1;;;;;1009:24:49;;;-1:-1:-1;;;;;;1009:24:49;;;;;;;;1043:18;;;;;;;;;;;220:2369;;;;;;",
  "deployedSourceMap": "220:2369:49:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;277:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;277:19:49;;;;;;;;;;;;;;;;;;;;;;;1271:1316;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1271:1316:49;;;;;;;302:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;302:42:49;;;;246:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;246:25:49;;;;277:19;;;;;;:::o;1271:1316::-;1318:6;1372:10;;1318:6;;;;;;;;;;1372:10;;1356:27;;:::i;:::-;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1407:10:49;;1336:48;;-1:-1:-1;1399:33:49;1407:10;1399:33;1395:1126;;;1463:7;;1448:30;;;;;;:14;1463:7;;;1448:30;;;;;;;;;;;;;:14;;;;;;:30;;;;;1463:7;;1448:30;;;;;;;;1463:7;1448:14;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;1448:30:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1448:30:49;;;;1395:1126;;;1524:7;;1509:29;;;;;;:14;1524:7;;;1509:29;;;;1533:4;1509:29;;;;;;:14;;;;;;:29;;;;;1524:7;;1509:29;;;;;;;;1524:7;1509:14;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;1509:29:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1509:29:49;;;;1567:3;:7;;;:9;;;;;;;;;;;;;;;;;;;;;;;8::-1;5:2;;;30:1;27;20:12;5:2;1567:9:49;;;;8::-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1567:9:49;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1567:9:49;1610:29;;;;;;;;1567:9;;-1:-1:-1;1610:27:49;;;;;;:29;;;;;1567:9;;1610:29;;;;;;;;;:27;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;1610:29:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1610:29:49;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1610:29:49;1678:22;;;;;;;;1610:29;;-1:-1:-1;1678:20:49;;;;;;:22;;;;;1610:29;;1678:22;;;;;;;;;:20;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;1678:22:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1678:22:49;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1678:22:49;1735:10;;1715:46;;;;;;:19;1735:10;;;1715:46;;;;:19;;;:46;;;;;;;;;;;;;;1678:22;;-1:-1:-1;1715:19:49;;;:46;;;;;1735:10;;1715:46;;;;;;;;1735:10;1715:19;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;1715:46:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1797:10:49;;1776:59;;;;;;:20;1797:10;;;1776:59;;;;;;;;;;;;;;;;;1830:4;1776:59;;;;;;:20;;;;-1:-1:-1;1776:20:49;;-1:-1:-1;1776:59:49;;;;;1797:10;;1776:59;;;;;;;;1797:10;1776:20;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;1776:59:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1874:10:49;;:36;;;;;;:10;:36;;;;;;;;;:10;;;;;-1:-1:-1;1874:31:49;;-1:-1:-1;1874:36:49;;;;;;;;;;;;;;:10;;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;1874:36:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:36:49;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1874:36:49;1929:37;;;;;;;;;;1874:36;;-1:-1:-1;1929:37:49;;;;;;1874:36;1929:37;;;2098:10;;2077:53;;;;;;:20;2098:10;;;2077:53;;;;;;;;;;;;;;;;;;;:20;;;;;;:53;;;;;2098:10;;2077:53;;;;;;;;2098:10;2077:20;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;2077:53:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2144:48:49;;;;;;:27;:48;;;;;;;;;;;;;;;:27;;;;-1:-1:-1;2144:27:49;;-1:-1:-1;2144:48:49;;;;;-1:-1:-1;;2144:48:49;;;;;;;;-1:-1:-1;2144:27:49;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;2144:48:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2314:10:49;;2293:47;;;;;;:20;2314:10;;;2293:47;;;;:20;;;:47;;;;;;;;;;;;;;:20;;-1:-1:-1;2293:20:49;;-1:-1:-1;2293:47:49;;;;;2314:10;;2293:47;;;;;;;2314:10;2293:20;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;2293:47:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2354:41:49;;;;;;2375:4;2354:41;;;;:20;;;:41;;;;;;;;;;;;;;:20;;-1:-1:-1;2354:20:49;;-1:-1:-1;2354:41:49;;;;;-1:-1:-1;;2354:41:49;;;;;;;;-1:-1:-1;2354:20:49;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;2354:41:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2409:41:49;;;;;;:19;:41;;;;;;;:19;;:41;;;;;;;;;;;;;;:19;;-1:-1:-1;2409:19:49;;-1:-1:-1;2409:41:49;;;;;-1:-1:-1;;2409:41:49;;;;;;;;-1:-1:-1;2409:19:49;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;2409:41:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2464:46:49;;;;;;:24;:46;;;;;;;:24;;:46;;;;;;;;;;;;;;:24;;-1:-1:-1;2464:24:49;;-1:-1:-1;2464:46:49;;;;;-1:-1:-1;;2464:46:49;;;;;;;;-1:-1:-1;2464:24:49;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;2464:46:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2464:46:49;;;;1395:1126;2536:23;;;;;;;;;;;;;;;;;;;-1:-1:-1;2577:3:49;;1271:1316;-1:-1:-1;;;;;1271:1316:49:o;302:42::-;;;;;;:::o;246:25::-;;;;;;:::o;220:2369::-;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"../kernel/IKernel.sol\";\nimport \"../kernel/Kernel.sol\";\nimport \"../kernel/KernelProxy.sol\";\n\nimport \"../acl/IACL.sol\";\nimport \"../acl/ACL.sol\";\n\nimport \"./EVMScriptRegistryFactory.sol\";\n\n\ncontract DAOFactory {\n    IKernel public baseKernel;\n    IACL public baseACL;\n    EVMScriptRegistryFactory public regFactory;\n\n    event DeployDAO(address dao);\n    event DeployEVMScriptRegistry(address reg);\n\n    /**\n    * @notice Create a new DAOFactory, creating DAOs with Kernels proxied to `_baseKernel`, ACLs proxied to `_baseACL`, and new EVMScriptRegistries created from `_regFactory`.\n    * @param _baseKernel Base Kernel\n    * @param _baseACL Base ACL\n    * @param _regFactory EVMScriptRegistry factory\n    */\n    constructor(IKernel _baseKernel, IACL _baseACL, EVMScriptRegistryFactory _regFactory) public {\n        // No need to init as it cannot be killed by devops199\n        if (address(_regFactory) != address(0)) {\n            regFactory = _regFactory;\n        }\n\n        baseKernel = _baseKernel;\n        baseACL = _baseACL;\n    }\n\n    /**\n    * @notice Create a new DAO with `_root` set as the initial admin\n    * @param _root Address that will be granted control to setup DAO permissions\n    * @return Newly created DAO\n    */\n    function newDAO(address _root) public returns (Kernel) {\n        Kernel dao = Kernel(new KernelProxy(baseKernel));\n\n        if (address(regFactory) == address(0)) {\n            dao.initialize(baseACL, _root);\n        } else {\n            dao.initialize(baseACL, this);\n\n            ACL acl = ACL(dao.acl());\n            bytes32 permRole = acl.CREATE_PERMISSIONS_ROLE();\n            bytes32 appManagerRole = dao.APP_MANAGER_ROLE();\n\n            acl.grantPermission(regFactory, acl, permRole);\n\n            acl.createPermission(regFactory, dao, appManagerRole, this);\n\n            EVMScriptRegistry reg = regFactory.newEVMScriptRegistry(dao);\n            emit DeployEVMScriptRegistry(address(reg));\n\n            // Clean up permissions\n            // First, completely reset the APP_MANAGER_ROLE\n            acl.revokePermission(regFactory, dao, appManagerRole);\n            acl.removePermissionManager(dao, appManagerRole);\n\n            // Then, make root the only holder and manager of CREATE_PERMISSIONS_ROLE\n            acl.revokePermission(regFactory, acl, permRole);\n            acl.revokePermission(this, acl, permRole);\n            acl.grantPermission(_root, acl, permRole);\n            acl.setPermissionManager(_root, acl, permRole);\n        }\n\n        emit DeployDAO(address(dao));\n\n        return dao;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/factory/DAOFactory.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
    "exportedSymbols": {
      "DAOFactory": [
        12439
      ]
    },
    "id": 12440,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12241,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:49"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "../kernel/IKernel.sol",
        "id": 12242,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 12601,
        "src": "25:31:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 12243,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 13093,
        "src": "57:30:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
        "file": "../kernel/KernelProxy.sol",
        "id": 12244,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 13183,
        "src": "88:35:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 12245,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 9674,
        "src": "125:25:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 12246,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 9153,
        "src": "151:24:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
        "file": "./EVMScriptRegistryFactory.sol",
        "id": 12247,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 12547,
        "src": "177:40:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          13182
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 12439,
        "linearizedBaseContracts": [
          12439
        ],
        "name": "DAOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 12249,
            "name": "baseKernel",
            "nodeType": "VariableDeclaration",
            "scope": 12439,
            "src": "246:25:49",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IKernel_$12600",
              "typeString": "contract IKernel"
            },
            "typeName": {
              "contractScope": null,
              "id": 12248,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12600,
              "src": "246:7:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$12600",
                "typeString": "contract IKernel"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12251,
            "name": "baseACL",
            "nodeType": "VariableDeclaration",
            "scope": 12439,
            "src": "277:19:49",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IACL_$9673",
              "typeString": "contract IACL"
            },
            "typeName": {
              "contractScope": null,
              "id": 12250,
              "name": "IACL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9673,
              "src": "277:4:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IACL_$9673",
                "typeString": "contract IACL"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12253,
            "name": "regFactory",
            "nodeType": "VariableDeclaration",
            "scope": 12439,
            "src": "302:42:49",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
              "typeString": "contract EVMScriptRegistryFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 12252,
              "name": "EVMScriptRegistryFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12546,
              "src": "302:24:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                "typeString": "contract EVMScriptRegistryFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12257,
            "name": "DeployDAO",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12256,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12255,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 12257,
                  "src": "367:11:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12254,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:13:49"
            },
            "src": "351:29:49"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12261,
            "name": "DeployEVMScriptRegistry",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12259,
                  "indexed": false,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 12261,
                  "src": "415:11:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12258,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "415:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "414:13:49"
            },
            "src": "385:43:49"
          },
          {
            "body": {
              "id": 12291,
              "nodeType": "Block",
              "src": "837:231:49",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12271,
                          "name": "_regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12267,
                          "src": "922:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 12270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "914:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "914:20:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "946:1:49",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 12273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "938:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "938:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "914:34:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12282,
                  "nodeType": "IfStatement",
                  "src": "910:89:49",
                  "trueBody": {
                    "id": 12281,
                    "nodeType": "Block",
                    "src": "950:49:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12277,
                            "name": "regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12253,
                            "src": "964:10:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12278,
                            "name": "_regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12267,
                            "src": "977:11:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "src": "964:24:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        },
                        "id": 12280,
                        "nodeType": "ExpressionStatement",
                        "src": "964:24:49"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12283,
                      "name": "baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12249,
                      "src": "1009:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$12600",
                        "typeString": "contract IKernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12284,
                      "name": "_baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12263,
                      "src": "1022:11:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$12600",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "1009:24:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$12600",
                      "typeString": "contract IKernel"
                    }
                  },
                  "id": 12286,
                  "nodeType": "ExpressionStatement",
                  "src": "1009:24:49"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12287,
                      "name": "baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12251,
                      "src": "1043:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12288,
                      "name": "_baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12265,
                      "src": "1053:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      }
                    },
                    "src": "1043:18:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "id": 12290,
                  "nodeType": "ExpressionStatement",
                  "src": "1043:18:49"
                }
              ]
            },
            "documentation": "@notice Create a new DAOFactory, creating DAOs with Kernels proxied to `_baseKernel`, ACLs proxied to `_baseACL`, and new EVMScriptRegistries created from `_regFactory`.\n@param _baseKernel Base Kernel\n@param _baseACL Base ACL\n@param _regFactory EVMScriptRegistry factory",
            "id": 12292,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12263,
                  "name": "_baseKernel",
                  "nodeType": "VariableDeclaration",
                  "scope": 12292,
                  "src": "756:19:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$12600",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12262,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12600,
                    "src": "756:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$12600",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12265,
                  "name": "_baseACL",
                  "nodeType": "VariableDeclaration",
                  "scope": 12292,
                  "src": "777:13:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$9673",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12264,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9673,
                    "src": "777:4:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12267,
                  "name": "_regFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 12292,
                  "src": "792:36:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                    "typeString": "contract EVMScriptRegistryFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12266,
                    "name": "EVMScriptRegistryFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12546,
                    "src": "792:24:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                      "typeString": "contract EVMScriptRegistryFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "755:74:49"
            },
            "payable": false,
            "returnParameters": {
              "id": 12269,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "837:0:49"
            },
            "scope": 12439,
            "src": "744:324:49",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12437,
              "nodeType": "Block",
              "src": "1326:1261:49",
              "statements": [
                {
                  "assignments": [
                    12300
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12300,
                      "name": "dao",
                      "nodeType": "VariableDeclaration",
                      "scope": 12438,
                      "src": "1336:10:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$13092",
                        "typeString": "contract Kernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12299,
                        "name": "Kernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13092,
                        "src": "1336:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12307,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12304,
                            "name": "baseKernel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12249,
                            "src": "1372:10:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IKernel_$12600",
                              "typeString": "contract IKernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IKernel_$12600",
                              "typeString": "contract IKernel"
                            }
                          ],
                          "id": 12303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "1356:15:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_IKernel_$12600_$returns$_t_contract$_KernelProxy_$13182_$",
                            "typeString": "function (contract IKernel) returns (contract KernelProxy)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 12302,
                            "name": "KernelProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 13182,
                            "src": "1360:11:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KernelProxy_$13182",
                              "typeString": "contract KernelProxy"
                            }
                          }
                        },
                        "id": 12305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1356:27:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KernelProxy_$13182",
                          "typeString": "contract KernelProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KernelProxy_$13182",
                          "typeString": "contract KernelProxy"
                        }
                      ],
                      "id": 12301,
                      "name": "Kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13092,
                      "src": "1349:6:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Kernel_$13092_$",
                        "typeString": "type(contract Kernel)"
                      }
                    },
                    "id": 12306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1349:35:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1336:48:49"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12309,
                          "name": "regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12253,
                          "src": "1407:10:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 12308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1399:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1399:19:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1430:1:49",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 12311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1422:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1422:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1399:33:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12427,
                    "nodeType": "Block",
                    "src": "1495:1026:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12326,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12251,
                              "src": "1524:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12327,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15284,
                              "src": "1533:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12323,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1509:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 12325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12699,
                            "src": "1509:14:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$9673_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 12328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1509:29:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12329,
                        "nodeType": "ExpressionStatement",
                        "src": "1509:29:49"
                      },
                      {
                        "assignments": [
                          12331
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12331,
                            "name": "acl",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1553:7:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$9152",
                              "typeString": "contract ACL"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12330,
                              "name": "ACL",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 9152,
                              "src": "1553:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12337,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12333,
                                  "name": "dao",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12300,
                                  "src": "1567:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Kernel_$13092",
                                    "typeString": "contract Kernel"
                                  }
                                },
                                "id": 12334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "acl",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12962,
                                "src": "1567:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$9673_$",
                                  "typeString": "function () view external returns (contract IACL)"
                                }
                              },
                              "id": 12335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1567:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            ],
                            "id": 12332,
                            "name": "ACL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9152,
                            "src": "1563:3:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ACL_$9152_$",
                              "typeString": "type(contract ACL)"
                            }
                          },
                          "id": 12336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1563:14:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1553:24:49"
                      },
                      {
                        "assignments": [
                          12339
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12339,
                            "name": "permRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1591:16:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12338,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1591:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12343,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12340,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1610:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "CREATE_PERMISSIONS_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7876,
                            "src": "1610:27:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 12342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1610:29:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1591:48:49"
                      },
                      {
                        "assignments": [
                          12345
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12345,
                            "name": "appManagerRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1653:22:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12344,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1653:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12349,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12346,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1678:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 12347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "APP_MANAGER_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12634,
                            "src": "1678:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 12348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1678:22:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1653:47:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12353,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "1735:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12354,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1747:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12355,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "1752:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12350,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1715:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8099,
                            "src": "1715:19:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1715:46:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12357,
                        "nodeType": "ExpressionStatement",
                        "src": "1715:46:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12361,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "1797:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12362,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1809:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12363,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "1814:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12364,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15284,
                              "src": "1830:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12358,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1776:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8078,
                            "src": "1776:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,address,bytes32,address) external"
                            }
                          },
                          "id": 12365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1776:59:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12366,
                        "nodeType": "ExpressionStatement",
                        "src": "1776:59:49"
                      },
                      {
                        "assignments": [
                          12368
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12368,
                            "name": "reg",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1850:21:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                              "typeString": "contract EVMScriptRegistry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12367,
                              "name": "EVMScriptRegistry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11657,
                              "src": "1850:17:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12373,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12371,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1906:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12369,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "1874:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            "id": 12370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newEVMScriptRegistry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12545,
                            "src": "1874:31:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Kernel_$13092_$returns$_t_contract$_EVMScriptRegistry_$11657_$",
                              "typeString": "function (contract Kernel) external returns (contract EVMScriptRegistry)"
                            }
                          },
                          "id": 12372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1874:36:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1850:60:49"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12376,
                                  "name": "reg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12368,
                                  "src": "1961:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                ],
                                "id": 12375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1953:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 12377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1953:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12374,
                            "name": "DeployEVMScriptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12261,
                            "src": "1929:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 12378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1929:37:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12379,
                        "nodeType": "EmitStatement",
                        "src": "1924:42:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12383,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "2098:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12384,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "2110:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12385,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "2115:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12380,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2077:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8156,
                            "src": "2077:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2077:53:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12387,
                        "nodeType": "ExpressionStatement",
                        "src": "2077:53:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12391,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "2172:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12392,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "2177:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12388,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2144:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removePermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8196,
                            "src": "2144:27:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32) external"
                            }
                          },
                          "id": 12393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2144:48:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12394,
                        "nodeType": "ExpressionStatement",
                        "src": "2144:48:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12398,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "2314:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12399,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2326:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12400,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2331:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12395,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2293:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8156,
                            "src": "2293:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2293:47:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12402,
                        "nodeType": "ExpressionStatement",
                        "src": "2293:47:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12406,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15284,
                              "src": "2375:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12407,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2381:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12408,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2386:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12403,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2354:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8156,
                            "src": "2354:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2354:41:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12410,
                        "nodeType": "ExpressionStatement",
                        "src": "2354:41:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12414,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12294,
                              "src": "2429:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12415,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2436:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12416,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2441:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12411,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2409:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8099,
                            "src": "2409:19:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2409:41:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12418,
                        "nodeType": "ExpressionStatement",
                        "src": "2409:41:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12422,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12294,
                              "src": "2489:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12423,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2496:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12424,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2501:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12419,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2464:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8176,
                            "src": "2464:24:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2464:46:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12426,
                        "nodeType": "ExpressionStatement",
                        "src": "2464:46:49"
                      }
                    ]
                  },
                  "id": 12428,
                  "nodeType": "IfStatement",
                  "src": "1395:1126:49",
                  "trueBody": {
                    "id": 12322,
                    "nodeType": "Block",
                    "src": "1434:55:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12318,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12251,
                              "src": "1463:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12319,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12294,
                              "src": "1472:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12315,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1448:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 12317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12699,
                            "src": "1448:14:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$9673_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 12320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1448:30:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12321,
                        "nodeType": "ExpressionStatement",
                        "src": "1448:30:49"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12431,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12300,
                            "src": "2554:3:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          ],
                          "id": 12430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2546:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2546:12:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12429,
                      "name": "DeployDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12257,
                      "src": "2536:9:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 12433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2536:23:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12434,
                  "nodeType": "EmitStatement",
                  "src": "2531:28:49"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12435,
                    "name": "dao",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12300,
                    "src": "2577:3:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "functionReturnParameters": 12298,
                  "id": 12436,
                  "nodeType": "Return",
                  "src": "2570:10:49"
                }
              ]
            },
            "documentation": "@notice Create a new DAO with `_root` set as the initial admin\n@param _root Address that will be granted control to setup DAO permissions\n@return Newly created DAO",
            "id": 12438,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12294,
                  "name": "_root",
                  "nodeType": "VariableDeclaration",
                  "scope": 12438,
                  "src": "1287:13:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12293,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1286:15:49"
            },
            "payable": false,
            "returnParameters": {
              "id": 12298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12297,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12438,
                  "src": "1318:6:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12296,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "1318:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1317:8:49"
            },
            "scope": 12439,
            "src": "1271:1316:49",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 12440,
        "src": "220:2369:49"
      }
    ],
    "src": "0:2590:49"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
    "exportedSymbols": {
      "DAOFactory": [
        12439
      ]
    },
    "id": 12440,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12241,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:49"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "../kernel/IKernel.sol",
        "id": 12242,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 12601,
        "src": "25:31:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 12243,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 13093,
        "src": "57:30:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
        "file": "../kernel/KernelProxy.sol",
        "id": 12244,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 13183,
        "src": "88:35:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 12245,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 9674,
        "src": "125:25:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 12246,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 9153,
        "src": "151:24:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
        "file": "./EVMScriptRegistryFactory.sol",
        "id": 12247,
        "nodeType": "ImportDirective",
        "scope": 12440,
        "sourceUnit": 12547,
        "src": "177:40:49",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          13182
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 12439,
        "linearizedBaseContracts": [
          12439
        ],
        "name": "DAOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 12249,
            "name": "baseKernel",
            "nodeType": "VariableDeclaration",
            "scope": 12439,
            "src": "246:25:49",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IKernel_$12600",
              "typeString": "contract IKernel"
            },
            "typeName": {
              "contractScope": null,
              "id": 12248,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12600,
              "src": "246:7:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$12600",
                "typeString": "contract IKernel"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12251,
            "name": "baseACL",
            "nodeType": "VariableDeclaration",
            "scope": 12439,
            "src": "277:19:49",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IACL_$9673",
              "typeString": "contract IACL"
            },
            "typeName": {
              "contractScope": null,
              "id": 12250,
              "name": "IACL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9673,
              "src": "277:4:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IACL_$9673",
                "typeString": "contract IACL"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12253,
            "name": "regFactory",
            "nodeType": "VariableDeclaration",
            "scope": 12439,
            "src": "302:42:49",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
              "typeString": "contract EVMScriptRegistryFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 12252,
              "name": "EVMScriptRegistryFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12546,
              "src": "302:24:49",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                "typeString": "contract EVMScriptRegistryFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12257,
            "name": "DeployDAO",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12256,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12255,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 12257,
                  "src": "367:11:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12254,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:13:49"
            },
            "src": "351:29:49"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12261,
            "name": "DeployEVMScriptRegistry",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12259,
                  "indexed": false,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 12261,
                  "src": "415:11:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12258,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "415:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "414:13:49"
            },
            "src": "385:43:49"
          },
          {
            "body": {
              "id": 12291,
              "nodeType": "Block",
              "src": "837:231:49",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12271,
                          "name": "_regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12267,
                          "src": "922:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 12270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "914:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "914:20:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "946:1:49",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 12273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "938:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "938:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "914:34:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12282,
                  "nodeType": "IfStatement",
                  "src": "910:89:49",
                  "trueBody": {
                    "id": 12281,
                    "nodeType": "Block",
                    "src": "950:49:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12277,
                            "name": "regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12253,
                            "src": "964:10:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12278,
                            "name": "_regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12267,
                            "src": "977:11:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "src": "964:24:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        },
                        "id": 12280,
                        "nodeType": "ExpressionStatement",
                        "src": "964:24:49"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12283,
                      "name": "baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12249,
                      "src": "1009:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$12600",
                        "typeString": "contract IKernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12284,
                      "name": "_baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12263,
                      "src": "1022:11:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$12600",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "1009:24:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$12600",
                      "typeString": "contract IKernel"
                    }
                  },
                  "id": 12286,
                  "nodeType": "ExpressionStatement",
                  "src": "1009:24:49"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12287,
                      "name": "baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12251,
                      "src": "1043:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12288,
                      "name": "_baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12265,
                      "src": "1053:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$9673",
                        "typeString": "contract IACL"
                      }
                    },
                    "src": "1043:18:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "id": 12290,
                  "nodeType": "ExpressionStatement",
                  "src": "1043:18:49"
                }
              ]
            },
            "documentation": "@notice Create a new DAOFactory, creating DAOs with Kernels proxied to `_baseKernel`, ACLs proxied to `_baseACL`, and new EVMScriptRegistries created from `_regFactory`.\n@param _baseKernel Base Kernel\n@param _baseACL Base ACL\n@param _regFactory EVMScriptRegistry factory",
            "id": 12292,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12263,
                  "name": "_baseKernel",
                  "nodeType": "VariableDeclaration",
                  "scope": 12292,
                  "src": "756:19:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$12600",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12262,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12600,
                    "src": "756:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$12600",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12265,
                  "name": "_baseACL",
                  "nodeType": "VariableDeclaration",
                  "scope": 12292,
                  "src": "777:13:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$9673",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12264,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9673,
                    "src": "777:4:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$9673",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12267,
                  "name": "_regFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 12292,
                  "src": "792:36:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                    "typeString": "contract EVMScriptRegistryFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12266,
                    "name": "EVMScriptRegistryFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12546,
                    "src": "792:24:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                      "typeString": "contract EVMScriptRegistryFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "755:74:49"
            },
            "payable": false,
            "returnParameters": {
              "id": 12269,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "837:0:49"
            },
            "scope": 12439,
            "src": "744:324:49",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12437,
              "nodeType": "Block",
              "src": "1326:1261:49",
              "statements": [
                {
                  "assignments": [
                    12300
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12300,
                      "name": "dao",
                      "nodeType": "VariableDeclaration",
                      "scope": 12438,
                      "src": "1336:10:49",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$13092",
                        "typeString": "contract Kernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12299,
                        "name": "Kernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13092,
                        "src": "1336:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$13092",
                          "typeString": "contract Kernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12307,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12304,
                            "name": "baseKernel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12249,
                            "src": "1372:10:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IKernel_$12600",
                              "typeString": "contract IKernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IKernel_$12600",
                              "typeString": "contract IKernel"
                            }
                          ],
                          "id": 12303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "1356:15:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_IKernel_$12600_$returns$_t_contract$_KernelProxy_$13182_$",
                            "typeString": "function (contract IKernel) returns (contract KernelProxy)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 12302,
                            "name": "KernelProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 13182,
                            "src": "1360:11:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KernelProxy_$13182",
                              "typeString": "contract KernelProxy"
                            }
                          }
                        },
                        "id": 12305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1356:27:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KernelProxy_$13182",
                          "typeString": "contract KernelProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KernelProxy_$13182",
                          "typeString": "contract KernelProxy"
                        }
                      ],
                      "id": 12301,
                      "name": "Kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13092,
                      "src": "1349:6:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Kernel_$13092_$",
                        "typeString": "type(contract Kernel)"
                      }
                    },
                    "id": 12306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1349:35:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1336:48:49"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12309,
                          "name": "regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12253,
                          "src": "1407:10:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 12308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1399:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1399:19:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1430:1:49",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 12311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1422:7:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1422:10:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1399:33:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12427,
                    "nodeType": "Block",
                    "src": "1495:1026:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12326,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12251,
                              "src": "1524:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12327,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15284,
                              "src": "1533:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12323,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1509:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 12325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12699,
                            "src": "1509:14:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$9673_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 12328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1509:29:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12329,
                        "nodeType": "ExpressionStatement",
                        "src": "1509:29:49"
                      },
                      {
                        "assignments": [
                          12331
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12331,
                            "name": "acl",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1553:7:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$9152",
                              "typeString": "contract ACL"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12330,
                              "name": "ACL",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 9152,
                              "src": "1553:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12337,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12333,
                                  "name": "dao",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12300,
                                  "src": "1567:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Kernel_$13092",
                                    "typeString": "contract Kernel"
                                  }
                                },
                                "id": 12334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "acl",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12962,
                                "src": "1567:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$9673_$",
                                  "typeString": "function () view external returns (contract IACL)"
                                }
                              },
                              "id": 12335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1567:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            ],
                            "id": 12332,
                            "name": "ACL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9152,
                            "src": "1563:3:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ACL_$9152_$",
                              "typeString": "type(contract ACL)"
                            }
                          },
                          "id": 12336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1563:14:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$9152",
                            "typeString": "contract ACL"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1553:24:49"
                      },
                      {
                        "assignments": [
                          12339
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12339,
                            "name": "permRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1591:16:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12338,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1591:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12343,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12340,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1610:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "CREATE_PERMISSIONS_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7876,
                            "src": "1610:27:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 12342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1610:29:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1591:48:49"
                      },
                      {
                        "assignments": [
                          12345
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12345,
                            "name": "appManagerRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1653:22:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12344,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1653:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12349,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12346,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1678:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 12347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "APP_MANAGER_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12634,
                            "src": "1678:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 12348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1678:22:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1653:47:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12353,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "1735:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12354,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1747:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12355,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "1752:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12350,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1715:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8099,
                            "src": "1715:19:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1715:46:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12357,
                        "nodeType": "ExpressionStatement",
                        "src": "1715:46:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12361,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "1797:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12362,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1809:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12363,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "1814:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12364,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15284,
                              "src": "1830:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12358,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "1776:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8078,
                            "src": "1776:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,address,bytes32,address) external"
                            }
                          },
                          "id": 12365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1776:59:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12366,
                        "nodeType": "ExpressionStatement",
                        "src": "1776:59:49"
                      },
                      {
                        "assignments": [
                          12368
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12368,
                            "name": "reg",
                            "nodeType": "VariableDeclaration",
                            "scope": 12438,
                            "src": "1850:21:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                              "typeString": "contract EVMScriptRegistry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12367,
                              "name": "EVMScriptRegistry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11657,
                              "src": "1850:17:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12373,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12371,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1906:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12369,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "1874:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            "id": 12370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newEVMScriptRegistry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12545,
                            "src": "1874:31:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Kernel_$13092_$returns$_t_contract$_EVMScriptRegistry_$11657_$",
                              "typeString": "function (contract Kernel) external returns (contract EVMScriptRegistry)"
                            }
                          },
                          "id": 12372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1874:36:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1850:60:49"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12376,
                                  "name": "reg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12368,
                                  "src": "1961:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$11657",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                ],
                                "id": 12375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1953:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 12377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1953:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12374,
                            "name": "DeployEVMScriptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12261,
                            "src": "1929:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 12378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1929:37:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12379,
                        "nodeType": "EmitStatement",
                        "src": "1924:42:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12383,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "2098:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12384,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "2110:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12385,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "2115:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12380,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2077:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8156,
                            "src": "2077:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2077:53:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12387,
                        "nodeType": "ExpressionStatement",
                        "src": "2077:53:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12391,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "2172:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12392,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "2177:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12388,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2144:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removePermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8196,
                            "src": "2144:27:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32) external"
                            }
                          },
                          "id": 12393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2144:48:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12394,
                        "nodeType": "ExpressionStatement",
                        "src": "2144:48:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12398,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12253,
                              "src": "2314:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12399,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2326:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12400,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2331:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$12546",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12395,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2293:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8156,
                            "src": "2293:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2293:47:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12402,
                        "nodeType": "ExpressionStatement",
                        "src": "2293:47:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12406,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15284,
                              "src": "2375:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12407,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2381:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12408,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2386:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$12439",
                                "typeString": "contract DAOFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12403,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2354:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8156,
                            "src": "2354:20:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2354:41:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12410,
                        "nodeType": "ExpressionStatement",
                        "src": "2354:41:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12414,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12294,
                              "src": "2429:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12415,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2436:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12416,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2441:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12411,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2409:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8099,
                            "src": "2409:19:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2409:41:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12418,
                        "nodeType": "ExpressionStatement",
                        "src": "2409:41:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12422,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12294,
                              "src": "2489:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12423,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2496:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12424,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12339,
                              "src": "2501:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12419,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12331,
                              "src": "2464:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$9152",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 12421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8176,
                            "src": "2464:24:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 12425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2464:46:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12426,
                        "nodeType": "ExpressionStatement",
                        "src": "2464:46:49"
                      }
                    ]
                  },
                  "id": 12428,
                  "nodeType": "IfStatement",
                  "src": "1395:1126:49",
                  "trueBody": {
                    "id": 12322,
                    "nodeType": "Block",
                    "src": "1434:55:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12318,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12251,
                              "src": "1463:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12319,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12294,
                              "src": "1472:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$9673",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12315,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12300,
                              "src": "1448:3:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$13092",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 12317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12699,
                            "src": "1448:14:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$9673_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 12320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1448:30:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12321,
                        "nodeType": "ExpressionStatement",
                        "src": "1448:30:49"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12431,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12300,
                            "src": "2554:3:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$13092",
                              "typeString": "contract Kernel"
                            }
                          ],
                          "id": 12430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2546:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2546:12:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12429,
                      "name": "DeployDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12257,
                      "src": "2536:9:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 12433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2536:23:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12434,
                  "nodeType": "EmitStatement",
                  "src": "2531:28:49"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12435,
                    "name": "dao",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12300,
                    "src": "2577:3:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "functionReturnParameters": 12298,
                  "id": 12436,
                  "nodeType": "Return",
                  "src": "2570:10:49"
                }
              ]
            },
            "documentation": "@notice Create a new DAO with `_root` set as the initial admin\n@param _root Address that will be granted control to setup DAO permissions\n@return Newly created DAO",
            "id": 12438,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12294,
                  "name": "_root",
                  "nodeType": "VariableDeclaration",
                  "scope": 12438,
                  "src": "1287:13:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12293,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1286:15:49"
            },
            "payable": false,
            "returnParameters": {
              "id": 12298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12297,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12438,
                  "src": "1318:6:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$13092",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12296,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13092,
                    "src": "1318:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$13092",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1317:8:49"
            },
            "scope": 12439,
            "src": "1271:1316:49",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 12440,
        "src": "220:2369:49"
      }
    ],
    "src": "0:2590:49"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.774Z"
}