{
  "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"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"baseACL\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_root\",\"type\":\"address\"}],\"name\":\"newDAO\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\"}],\"devdoc\":{\"methods\":{\"newDAO(address)\":{\"params\":{\"_root\":\"Address that will be granted control to setup DAO permissions\"},\"return\":\"Newly created DAO\"}}},\"userdoc\":{\"methods\":{\"newDAO(address)\":{\"notice\":\"Create a new DAO with `_root` set as the initial admin\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/factory/DAOFactory.sol\":\"DAOFactory\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/acl/ACL.sol\":{\"keccak256\":\"0xcb2488421b22af099bafe210916d33c9b7c3a06c4290583ff74733a825860754\",\"urls\":[\"bzzr://3bcd0183d28b5c50f72345d8aa2635eb89dba2d45e382c0f59ae66ead2296ad4\"]},\"@aragon/os/contracts/acl/ACLSyntaxSugar.sol\":{\"keccak256\":\"0x519915c14576b679b5ed5767d6b21b44a13aa7ae2fe7b33664ca364fafc33e00\",\"urls\":[\"bzzr://8d899afdbf161eaa5e6ce6a68d9ea420c3f98a00a71d70b293e8de8771e6aa62\"]},\"@aragon/os/contracts/acl/IACL.sol\":{\"keccak256\":\"0xe3492bc29d2482e65d2e39c96487b5388f6181f6bcdc6fe6329b8206b84c0cf1\",\"urls\":[\"bzzr://3af0b7e423c7ff4100a3b5868203ec169c866328f2d93d3b6a2111e916cdc411\"]},\"@aragon/os/contracts/acl/IACLOracle.sol\":{\"keccak256\":\"0xada5651af900192b440c9a7802d531846d9d4ce12338b53f3091257b4c2e9f28\",\"urls\":[\"bzzr://1b9787c7808d9217e6df31f50d62f78336909a695d80a6bfb1d031a2d968f7f4\"]},\"@aragon/os/contracts/apps/AppProxyBase.sol\":{\"keccak256\":\"0x6d591412d30dc3d5079f8c5cab04f83ad44be376a9e4143d4a3b2067cd7a4483\",\"urls\":[\"bzzr://fa928f595ac4de05bb78303e1e6ee186331d10602dbb8bc56c23c9761584a26b\"]},\"@aragon/os/contracts/apps/AppProxyPinned.sol\":{\"keccak256\":\"0xbe6285bcc237c696e297948be02cfad8d48812ba52d67f8947b52c0546da53b1\",\"urls\":[\"bzzr://217ba70dd30d05d654c4537fce1d353e7e751ba44fea487559f60aa69f9f255f\"]},\"@aragon/os/contracts/apps/AppProxyUpgradeable.sol\":{\"keccak256\":\"0xbcc626f70099c7e859b9c2bb8ca91e72b84f9e6783f91277e40737d51bd2c433\",\"urls\":[\"bzzr://b4467e610b0a9d79c703c4ff711a1acce11dea6d33b79298734ef8ecc1c71728\"]},\"@aragon/os/contracts/apps/AppStorage.sol\":{\"keccak256\":\"0xb1c8eb71d1bdfe1241cc1714b280b46bbfc5bcb1e8499d42c24d3f5f5e8130f1\",\"urls\":[\"bzzr://503beec9e0e19834cb685a1d037eb9caaa412e3709d90bf6e53f51d143d58029\"]},\"@aragon/os/contracts/apps/AragonApp.sol\":{\"keccak256\":\"0xba456000d65bea8d9d82e9f1789086c3777df68fe364f8f397973b6d579f3a2a\",\"urls\":[\"bzzr://85ae9658277830a9454e34e319f8fbcb27d4e015d3bb1219c4d42ec33b9a184e\"]},\"@aragon/os/contracts/common/Autopetrified.sol\":{\"keccak256\":\"0x216e6ecbdcf45d90e8846ab2773072bd82180558a7dcf0c5425ed13b0188c5f3\",\"urls\":[\"bzzr://95b7ec6b2e8d3d8cd8c02f9be8b17d715c48a35445ba194429cca5264bfd0435\"]},\"@aragon/os/contracts/common/ConversionHelpers.sol\":{\"keccak256\":\"0x9872383d458352f5c68fa5afd1fc84ab6b172cbee33359cfa57655b8eda92416\",\"urls\":[\"bzzr://4636d13fecb497561ff5a2c54bb936a0339308bffa4e71a988b8ce00dcc249f3\"]},\"@aragon/os/contracts/common/DelegateProxy.sol\":{\"keccak256\":\"0x381a4ab9b57abf496b337146a52d533aaf6a8247941fbc19735cbde0e891e85b\",\"urls\":[\"bzzr://f7457df0e3f0ec11cb66a6b90017299fbb4ea1129ec88739af56682032f95c02\"]},\"@aragon/os/contracts/common/DepositableDelegateProxy.sol\":{\"keccak256\":\"0x80a08f88ca7051a248c6fd91283fef4b01b241d1dc97e13499f1460093ff3068\",\"urls\":[\"bzzr://5b130a1a8a655a0c1cb184ed7857bd68ace262d4904d2ed3f94b660721074f11\"]},\"@aragon/os/contracts/common/DepositableStorage.sol\":{\"keccak256\":\"0x67e1884ba4c91de1c6fe1fc2c1c632c29ed3e7894a434c049be9f1ed80539237\",\"urls\":[\"bzzr://94f42ad7b57e419a62b9505affe5d4b17e8a139bfc5c26ec3c17ed6572589a1a\"]},\"@aragon/os/contracts/common/EtherTokenConstant.sol\":{\"keccak256\":\"0xb18d16ad5127519251d9759349bf0ce1e5cfc861a776c5297b91a625c84d0363\",\"urls\":[\"bzzr://42b57d455cdbf7a8ab1383eb977c55d1826870a488cfc0cbc906a3d0f9ad2328\"]},\"@aragon/os/contracts/common/IVaultRecoverable.sol\":{\"keccak256\":\"0xd7cb66ee5d01be69a6abab04583cc86755bf63c2f1fd03b519a876162f52b323\",\"urls\":[\"bzzr://acb75e2637639bbc83b95032a822a54a588889f203b188e97cd78292cc0ee7f5\"]},\"@aragon/os/contracts/common/Initializable.sol\":{\"keccak256\":\"0xc559fdbee1c0ee18b6f2f866c28ed6eb96859b2c88f75867ca11f25ebd00b090\",\"urls\":[\"bzzr://3d3bca8b35030fc12f94bb52a162be9520868b27ff2cb32f09179d67b6ffdf93\"]},\"@aragon/os/contracts/common/IsContract.sol\":{\"keccak256\":\"0xb76e263e3532883fe32dfe4b1447eb487a570e121c5cce01cee604dd9e44a075\",\"urls\":[\"bzzr://4a7dd7aafff496a2c6403a7e9f4e74562088b5a38e2f6e2670e38dab11b9cd8f\"]},\"@aragon/os/contracts/common/Petrifiable.sol\":{\"keccak256\":\"0xb69f9d6de8ff6f2a084aca2e0228c9008a8776482a70bcab16f46a693ec77be6\",\"urls\":[\"bzzr://ca1d7bb504b8d9d75c162f5edc8588ac86934b69f765f2010d603027dc534375\"]},\"@aragon/os/contracts/common/ReentrancyGuard.sol\":{\"keccak256\":\"0x2b2014de57620aedded6365e742e17b9a23492d754e48dfeefa56f7e5bcf5645\",\"urls\":[\"bzzr://1aa2b79808ccb14b6c2d68f9283bd40300877c749b44edf0f66d78f0c1d17708\"]},\"@aragon/os/contracts/common/SafeERC20.sol\":{\"keccak256\":\"0xd251a1207e1faa4c41500bf927310bb739b1fbc0bf880f236f8e0a9236d6a03a\",\"urls\":[\"bzzr://b2d0f5981950b4e90eaee65c85050ac4f86a79f579f4ef38e6b281c0de980b2b\"]},\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]},\"@aragon/os/contracts/common/UnstructuredStorage.sol\":{\"keccak256\":\"0xe0d627fc7a7716409389f34cfe49366ba7871309d3a73262ec9608ef73e47591\",\"urls\":[\"bzzr://9742204494402cdecc66b266f0e420fcfe2677ba710db7651c40f96a63940bef\"]},\"@aragon/os/contracts/common/VaultRecoverable.sol\":{\"keccak256\":\"0x4f4de2c27ea7df731ad7d9babc37965a805282fed16b422f46a35d9d2ef931a1\",\"urls\":[\"bzzr://02d492884e6b1cf7c0869974219c40453d23cf2021cc1deaa6895e0f1b4404b9\"]},\"@aragon/os/contracts/evmscript/EVMScriptRegistry.sol\":{\"keccak256\":\"0x0a8a940995af70625b926c4a70f3d847841f7da2601087436e3bae9b41af76c4\",\"urls\":[\"bzzr://fe95cca41c61cdffdb03e231fbab7c1c7a33e24cb0f48f5d5f5056fc797078cd\"]},\"@aragon/os/contracts/evmscript/EVMScriptRunner.sol\":{\"keccak256\":\"0xcb6b5f7d2610321882cdc86819f1a51341c33b510fff7c60936ac7d7a015d7be\",\"urls\":[\"bzzr://bc430c1487d75909dc059de848123822c257ea9e7c812a7252c10986be253e21\"]},\"@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol\":{\"keccak256\":\"0x9cab64cd2f10148d4e20433ecd11679e69be1fbde112892c48db94f92e48c571\",\"urls\":[\"bzzr://b4bf9f4fc41e6e7791a84d0847410677fc0066ed393872186d90f819f5f22cc0\"]},\"@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol\":{\"keccak256\":\"0x00d98507ec160cb7cc814cc9bdebd01a414353636d6045720fe6d1592277694b\",\"urls\":[\"bzzr://170505211d1846fe24b89cfceea7f5b59a587527f68f89e8f36fed8e08b02db4\"]},\"@aragon/os/contracts/evmscript/ScriptHelpers.sol\":{\"keccak256\":\"0xb602b537d0a349e3b461b40dee544a13214cc2a69b3dd7dcc58a8992c5c7ff91\",\"urls\":[\"bzzr://ab7276544b833100a6f62cb21936c5e2399ad275a87094e3963fc32660541e68\"]},\"@aragon/os/contracts/evmscript/executors/BaseEVMScriptExecutor.sol\":{\"keccak256\":\"0x753b306dd5db5193cffe28207b5580795dbf282a58a86b230af8260e6130b9ed\",\"urls\":[\"bzzr://59da6d3ce9a47180a82a286fd2970ca9e7974b5fa81ce7916e427792d784255e\"]},\"@aragon/os/contracts/evmscript/executors/CallsScript.sol\":{\"keccak256\":\"0xc7078b505c6e458b5d4d7d47df87245b3bdb96f8c21d2b93669d6b5251456a2c\",\"urls\":[\"bzzr://a77cc8bc48f5c4e3345171cc6df12109c58c297323aff7d67471c9be1ae1396d\"]},\"@aragon/os/contracts/factory/AppProxyFactory.sol\":{\"keccak256\":\"0x94e88f4e8747be9487e32069eb22c1455ffc49cfd1299ef1eba212049c2db115\",\"urls\":[\"bzzr://b4e9f5de68841156d93b92e55ef031762a2a273215b19190d93cac86b1776ea4\"]},\"@aragon/os/contracts/factory/DAOFactory.sol\":{\"keccak256\":\"0x606c9813487fba0c479b0e5b2bc077bab428d6c24b480936c5172bfb9d5598b6\",\"urls\":[\"bzzr://c66f36b79057ea27f6ae43969a47d308d70342a77535a7256a393331afb8ea2c\"]},\"@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol\":{\"keccak256\":\"0xf879b2069ae82e266b79c48bde64a6f1f051bdc5c566cf01e0cc2e8844c381a7\",\"urls\":[\"bzzr://a9779103ad40d8ac1a9ebd761ac640050dca9aea2ca4dc77f0cde552a62fb8f3\"]},\"@aragon/os/contracts/kernel/IKernel.sol\":{\"keccak256\":\"0xd02b98282ccd271b0caa86f2c249986f1619dcf41811f5dadce520b32610b68e\",\"urls\":[\"bzzr://e77000fc50cf4cfb160518af1cfb612e6cbbc06cb4357b1e03ff492fd17d8d2e\"]},\"@aragon/os/contracts/kernel/Kernel.sol\":{\"keccak256\":\"0x117b1e169c984a4ad9070d5d7784bf91f8b1b16d3e695694cde253181b5ade3e\",\"urls\":[\"bzzr://1b5c68c03da122c98cdf6d36c5a26309bb0199afc9790fa5fa6c2311be46875b\"]},\"@aragon/os/contracts/kernel/KernelConstants.sol\":{\"keccak256\":\"0x95e46be2becfb4c8952880909cd32adf5dcfa8c2e0fdf4ae054bbf83ef7f53cd\",\"urls\":[\"bzzr://68d3ce6cda841600d1e5724c0752314a084e4eeebc1fdcb6bc22c92d77c9a3db\"]},\"@aragon/os/contracts/kernel/KernelProxy.sol\":{\"keccak256\":\"0xb60dea1ebaf0e3e634b0782ef98fdd854b3de5bb639f56c2937ca34b676940ba\",\"urls\":[\"bzzr://0a663339ee5ef7f84addfe2161b89b8bd974ec9666da371a0e6f66b79434f9e2\"]},\"@aragon/os/contracts/kernel/KernelStorage.sol\":{\"keccak256\":\"0x682eac86f7a617281098c15cadbaeec72a50cbe49101861a1454519df1718a4c\",\"urls\":[\"bzzr://f988478fa117c50841e0ecebb437b5bce214c3965de387e248e72f3266e86be5\"]},\"@aragon/os/contracts/lib/misc/ERCProxy.sol\":{\"keccak256\":\"0x7ede022292e2e9b7042b933e9ced7213f1e5c6c76fdd02c078a3abbbc03c7ee3\",\"urls\":[\"bzzr://3cb0c6f7982d8671ffabe9f1d631edef9905113afef3540574b2ea0e314ce9a1\"]},\"@aragon/os/contracts/lib/token/ERC20.sol\":{\"keccak256\":\"0xa2e319fde92f9e70912f09bf6e99bbf8b9b798961d54ffcba59d347d37bde1b7\",\"urls\":[\"bzzr://8c9a4aec8e185884f26ffb125975bd52c2363359b9adff481649c59cfe15660f\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060405160608061107d833981016040908152815160208301519190920151600160a060020a0381161561005a5760028054600160a060020a031916600160a060020a0383161790555b5060008054600160a060020a03938416600160a060020a03199182161790915560018054929093169116179055610fe7806100966000396000f3006080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663086b339e811461006657806321687444146100a4578063656362b5146100d2578063b16dd130146100e7575b600080fd5b34801561007257600080fd5b5061007b6100fc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100b057600080fd5b5061007b73ffffffffffffffffffffffffffffffffffffffff60043516610118565b3480156100de57600080fd5b5061007b610a95565b3480156100f357600080fd5b5061007b610ab1565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600080548190819081908190819073ffffffffffffffffffffffffffffffffffffffff16610144610acd565b73ffffffffffffffffffffffffffffffffffffffff909116815260405190819003602001906000f08015801561017e573d6000803e3d6000fd5b5060025490955073ffffffffffffffffffffffffffffffffffffffff16151561023a57600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152898316602482015290519187169163485cc9559160448082019260009290919082900301818387803b15801561021d57600080fd5b505af1158015610231573d6000803e3d6000fd5b50505050610a41565b600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015230602482015290519187169163485cc9559160448082019260009290919082900301818387803b1580156102b457600080fd5b505af11580156102c8573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561033057600080fd5b505af1158015610344573d6000803e3d6000fd5b505050506040513d602081101561035a57600080fd5b5051604080517f3d6ab68f000000000000000000000000000000000000000000000000000000008152905191955073ffffffffffffffffffffffffffffffffffffffff861691633d6ab68f916004808201926020929091908290030181600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b505050506040513d60208110156103f257600080fd5b5051604080517f8ea8dc9d000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff871691638ea8dc9d916004808201926020929091908290030181600087803b15801561046057600080fd5b505af1158015610474573d6000803e3d6000fd5b505050506040513d602081101561048a57600080fd5b5051600254604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529187166024830181905260448301879052905192945091630a8ed3db9160648082019260009290919082900301818387803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b5050600254604080517fbe03847800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201528983166024820152604481018790523060648201529051918816935063be038478925060848082019260009290919082900301818387803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b5050600254604080517f3340414300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015291519190921693506333404143925060248083019260209291908290030181600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507f1a40224412580c1ae5a2fbe8029a565f49a3a029608a8fd9320b32477f314579919081900360200190a1600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152878316602482015260448101859052905191861691639d0effdb9160648082019260009290919082900301818387803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b5050604080517fa885508a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018790529151918816935063a885508a925060448082019260009290919082900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b5050600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015291881660248301819052604483018890529051909350639d0effdb9250606480830192600092919082900301818387803b15801561086557600080fd5b505af1158015610879573d6000803e3d6000fd5b5050604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff881660248201819052604482018890529151919350639d0effdb925060648082019260009290919082900301818387803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b5050604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152881660248201819052604482018890529151919350630a8ed3db925060648082019260009290919082900301818387803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b5050604080517fafd925df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015288166024820181905260448201889052915191935063afd925df925060648082019260009290919082900301818387803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff8716815290517f3a7eb042a769adf51e9be78b68ed7af0ad7b379246536efc376ed2ca012382829181900360200190a1509295945050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6040516104de80610ade833901905600608060405234801561001057600080fd5b506040516020806104de833981016040525161003481640100000000610120810204565b151561003f57600080fd5b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c60008190527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f60209081527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede48054600160a060020a031916600160a060020a03851690811790915560408051918252517fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b23928290030190a35061014d565b600080600160a060020a038316151561013c5760009150610147565b823b90506000811191505b50919050565b6103828061015c6000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b5780634558850c1461015257806348a0c8dd146101965780635c60da1b146101bf57806386070cfe146101d4575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e9565b9050610126816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061026c945050505050565b505050005b34801561013757600080fd5b506101406102ad565b60408051918252519081900360200190f35b34801561015e57600080fd5b5061016d6004356024356102b2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a257600080fd5b506101ab6102e2565b604080519115158252519081900360200190f35b3480156101cb57600080fd5b5061016d6101e9565b3480156101e057600080fd5b50610140610312565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6000527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f6020527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede45473ffffffffffffffffffffffffffffffffffffffff1690565b600061027783610318565b151561028257600080fd5b612710905060008083516020850186855a03f43d604051816000823e8280156102a9578282f35b8282fd5b600290565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600061030d7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea610352565b905090565b60015481565b60008073ffffffffffffffffffffffffffffffffffffffff83161515610341576000915061034c565b823b90506000811191505b50919050565b54905600a165627a7a7230582005a1e02182395229234e7c1f5f8f78ac5043605628b961154e417e50f0489ea00029a165627a7a723058200f09aa9586790d1ba776fe3a9e2cf9b4b50b18be202877108c81f27ecb3263c10029",
  "deployedBytecode": "0x6080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663086b339e811461006657806321687444146100a4578063656362b5146100d2578063b16dd130146100e7575b600080fd5b34801561007257600080fd5b5061007b6100fc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100b057600080fd5b5061007b73ffffffffffffffffffffffffffffffffffffffff60043516610118565b3480156100de57600080fd5b5061007b610a95565b3480156100f357600080fd5b5061007b610ab1565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600080548190819081908190819073ffffffffffffffffffffffffffffffffffffffff16610144610acd565b73ffffffffffffffffffffffffffffffffffffffff909116815260405190819003602001906000f08015801561017e573d6000803e3d6000fd5b5060025490955073ffffffffffffffffffffffffffffffffffffffff16151561023a57600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152898316602482015290519187169163485cc9559160448082019260009290919082900301818387803b15801561021d57600080fd5b505af1158015610231573d6000803e3d6000fd5b50505050610a41565b600154604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015230602482015290519187169163485cc9559160448082019260009290919082900301818387803b1580156102b457600080fd5b505af11580156102c8573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561033057600080fd5b505af1158015610344573d6000803e3d6000fd5b505050506040513d602081101561035a57600080fd5b5051604080517f3d6ab68f000000000000000000000000000000000000000000000000000000008152905191955073ffffffffffffffffffffffffffffffffffffffff861691633d6ab68f916004808201926020929091908290030181600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b505050506040513d60208110156103f257600080fd5b5051604080517f8ea8dc9d000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff871691638ea8dc9d916004808201926020929091908290030181600087803b15801561046057600080fd5b505af1158015610474573d6000803e3d6000fd5b505050506040513d602081101561048a57600080fd5b5051600254604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529187166024830181905260448301879052905192945091630a8ed3db9160648082019260009290919082900301818387803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b5050600254604080517fbe03847800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201528983166024820152604481018790523060648201529051918816935063be038478925060848082019260009290919082900301818387803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b5050600254604080517f3340414300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015291519190921693506333404143925060248083019260209291908290030181600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507f1a40224412580c1ae5a2fbe8029a565f49a3a029608a8fd9320b32477f314579919081900360200190a1600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152878316602482015260448101859052905191861691639d0effdb9160648082019260009290919082900301818387803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b5050604080517fa885508a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018790529151918816935063a885508a925060448082019260009290919082900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b5050600254604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015291881660248301819052604483018890529051909350639d0effdb9250606480830192600092919082900301818387803b15801561086557600080fd5b505af1158015610879573d6000803e3d6000fd5b5050604080517f9d0effdb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff881660248201819052604482018890529151919350639d0effdb925060648082019260009290919082900301818387803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b5050604080517f0a8ed3db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152881660248201819052604482018890529151919350630a8ed3db925060648082019260009290919082900301818387803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b5050604080517fafd925df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015288166024820181905260448201889052915191935063afd925df925060648082019260009290919082900301818387803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff8716815290517f3a7eb042a769adf51e9be78b68ed7af0ad7b379246536efc376ed2ca012382829181900360200190a1509295945050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6040516104de80610ade833901905600608060405234801561001057600080fd5b506040516020806104de833981016040525161003481640100000000610120810204565b151561003f57600080fd5b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c60008190527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f60209081527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede48054600160a060020a031916600160a060020a03851690811790915560408051918252517fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b23928290030190a35061014d565b600080600160a060020a038316151561013c5760009150610147565b823b90506000811191505b50919050565b6103828061015c6000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b5780634558850c1461015257806348a0c8dd146101965780635c60da1b146101bf57806386070cfe146101d4575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e9565b9050610126816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061026c945050505050565b505050005b34801561013757600080fd5b506101406102ad565b60408051918252519081900360200190f35b34801561015e57600080fd5b5061016d6004356024356102b2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a257600080fd5b506101ab6102e2565b604080519115158252519081900360200190f35b3480156101cb57600080fd5b5061016d6101e9565b3480156101e057600080fd5b50610140610312565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6000527fc67454ed56db7ff90a4bb32fc9a8de1ab3174b221e5fecea22b7503a3111791f6020527f8e2ed18767e9c33b25344c240cdf92034fae56be99e2c07f3d9946d949ffede45473ffffffffffffffffffffffffffffffffffffffff1690565b600061027783610318565b151561028257600080fd5b612710905060008083516020850186855a03f43d604051816000823e8280156102a9578282f35b8282fd5b600290565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600061030d7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea610352565b905090565b60015481565b60008073ffffffffffffffffffffffffffffffffffffffff83161515610341576000915061034c565b823b90506000811191505b50919050565b54905600a165627a7a7230582005a1e02182395229234e7c1f5f8f78ac5043605628b961154e417e50f0489ea00029a165627a7a723058200f09aa9586790d1ba776fe3a9e2cf9b4b50b18be202877108c81f27ecb3263c10029",
  "sourceMap": "220:2369:47:-;;;744:324;8:9:-1;5:2;;;30:1;27;20:12;5:2;744:324:47;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;914:34:47;;;910:89;;964:10;:24;;-1:-1:-1;;;;;;964:24:47;-1:-1:-1;;;;;964:24:47;;;;;910:89;-1:-1:-1;1009:10:47;:24;;-1:-1:-1;;;;;1009:24:47;;;-1:-1:-1;;;;;;1009:24:47;;;;;;;;1043:18;;;;;;;;;;;220:2369;;;;;;",
  "deployedSourceMap": "220:2369:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;277:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;277:19:47;;;;;;;;;;;;;;;;;;;;;;;1271:1316;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1271:1316:47;;;;;;;302:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;302:42:47;;;;246:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;246:25:47;;;;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:47;;1336:48;;-1:-1:-1;1399:33:47;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:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1448:30:47;;;;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:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1509:29:47;;;;1567:3;:7;;;:9;;;;;;;;;;;;;;;;;;;;;;;8::-1;5:2;;;30:1;27;20:12;5:2;1567:9:47;;;;8::-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1567:9:47;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1567:9:47;1610:29;;;;;;;;1567:9;;-1:-1:-1;1610:27:47;;;;;;:29;;;;;1567:9;;1610:29;;;;;;;;;:27;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;1610:29:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1610:29:47;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1610:29:47;1678:22;;;;;;;;1610:29;;-1:-1:-1;1678:20:47;;;;;;:22;;;;;1610:29;;1678:22;;;;;;;;;:20;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;1678:22:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1678:22:47;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1678:22:47;1735:10;;1715:46;;;;;;:19;1735:10;;;1715:46;;;;:19;;;:46;;;;;;;;;;;;;;1678:22;;-1:-1:-1;1715:19:47;;;:46;;;;;1735:10;;1715:46;;;;;;;;1735:10;1715:19;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;1715:46:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1797:10:47;;1776:59;;;;;;:20;1797:10;;;1776:59;;;;;;;;;;;;;;;;;1830:4;1776:59;;;;;;:20;;;;-1:-1:-1;1776:20:47;;-1:-1:-1;1776:59:47;;;;;1797:10;;1776:59;;;;;;;;1797:10;1776:20;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;1776:59:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1874:10:47;;:36;;;;;;:10;:36;;;;;;;;;:10;;;;;-1:-1:-1;1874:31:47;;-1:-1:-1;1874:36:47;;;;;;;;;;;;;;:10;;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;1874:36:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:36:47;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1874:36:47;1929:37;;;;;;;;;;1874:36;;-1:-1:-1;1929:37:47;;;;;;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:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2144:48:47;;;;;;:27;:48;;;;;;;;;;;;;;;:27;;;;-1:-1:-1;2144:27:47;;-1:-1:-1;2144:48:47;;;;;-1:-1:-1;;2144:48:47;;;;;;;;-1:-1:-1;2144:27:47;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;2144:48:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2314:10:47;;2293:47;;;;;;:20;2314:10;;;2293:47;;;;:20;;;:47;;;;;;;;;;;;;;:20;;-1:-1:-1;2293:20:47;;-1:-1:-1;2293:47:47;;;;;2314:10;;2293:47;;;;;;;2314:10;2293:20;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;2293:47:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2354:41:47;;;;;;2375:4;2354:41;;;;:20;;;:41;;;;;;;;;;;;;;:20;;-1:-1:-1;2354:20:47;;-1:-1:-1;2354:41:47;;;;;-1:-1:-1;;2354:41:47;;;;;;;;-1:-1:-1;2354:20:47;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;2354:41:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2409:41:47;;;;;;:19;:41;;;;;;;:19;;:41;;;;;;;;;;;;;;:19;;-1:-1:-1;2409:19:47;;-1:-1:-1;2409:41:47;;;;;-1:-1:-1;;2409:41:47;;;;;;;;-1:-1:-1;2409:19:47;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;2409:41:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2464:46:47;;;;;;:24;:46;;;;;;;:24;;:46;;;;;;;;;;;;;;:24;;-1:-1:-1;2464:24:47;;-1:-1:-1;2464:46:47;;;;;-1:-1:-1;;2464:46:47;;;;;;;;-1:-1:-1;2464:24:47;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;2464:46:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2464:46:47;;;;1395:1126;2536:23;;;;;;;;;;;;;;;;;;;-1:-1:-1;2577:3:47;;1271:1316;-1:-1:-1;;;;;1271:1316:47: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": [
        8070
      ]
    },
    "id": 8071,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7872,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:47"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "../kernel/IKernel.sol",
        "id": 7873,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8232,
        "src": "25:31:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 7874,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8724,
        "src": "57:30:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
        "file": "../kernel/KernelProxy.sol",
        "id": 7875,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8814,
        "src": "88:35:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 7876,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 5305,
        "src": "125:25:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 7877,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 4784,
        "src": "151:24:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
        "file": "./EVMScriptRegistryFactory.sol",
        "id": 7878,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8178,
        "src": "177:40:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          8813
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8070,
        "linearizedBaseContracts": [
          8070
        ],
        "name": "DAOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 7880,
            "name": "baseKernel",
            "nodeType": "VariableDeclaration",
            "scope": 8070,
            "src": "246:25:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IKernel_$8231",
              "typeString": "contract IKernel"
            },
            "typeName": {
              "contractScope": null,
              "id": 7879,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8231,
              "src": "246:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$8231",
                "typeString": "contract IKernel"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7882,
            "name": "baseACL",
            "nodeType": "VariableDeclaration",
            "scope": 8070,
            "src": "277:19:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IACL_$5304",
              "typeString": "contract IACL"
            },
            "typeName": {
              "contractScope": null,
              "id": 7881,
              "name": "IACL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5304,
              "src": "277:4:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IACL_$5304",
                "typeString": "contract IACL"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7884,
            "name": "regFactory",
            "nodeType": "VariableDeclaration",
            "scope": 8070,
            "src": "302:42:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
              "typeString": "contract EVMScriptRegistryFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 7883,
              "name": "EVMScriptRegistryFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8177,
              "src": "302:24:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                "typeString": "contract EVMScriptRegistryFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7888,
            "name": "DeployDAO",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7886,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 7888,
                  "src": "367:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7885,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:13:47"
            },
            "src": "351:29:47"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7892,
            "name": "DeployEVMScriptRegistry",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7891,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7890,
                  "indexed": false,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 7892,
                  "src": "415:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7889,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "415:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "414:13:47"
            },
            "src": "385:43:47"
          },
          {
            "body": {
              "id": 7922,
              "nodeType": "Block",
              "src": "837:231:47",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7902,
                          "name": "_regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7898,
                          "src": "922:11:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 7901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "914:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "914:20:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "946:1:47",
                          "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": 7904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "938:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "938:10:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "914:34:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7913,
                  "nodeType": "IfStatement",
                  "src": "910:89:47",
                  "trueBody": {
                    "id": 7912,
                    "nodeType": "Block",
                    "src": "950:49:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7908,
                            "name": "regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7884,
                            "src": "964:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 7909,
                            "name": "_regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7898,
                            "src": "977:11:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "src": "964:24:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        },
                        "id": 7911,
                        "nodeType": "ExpressionStatement",
                        "src": "964:24:47"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7914,
                      "name": "baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7880,
                      "src": "1009:10:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$8231",
                        "typeString": "contract IKernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7915,
                      "name": "_baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7894,
                      "src": "1022:11:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$8231",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "1009:24:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$8231",
                      "typeString": "contract IKernel"
                    }
                  },
                  "id": 7917,
                  "nodeType": "ExpressionStatement",
                  "src": "1009:24:47"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7918,
                      "name": "baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7882,
                      "src": "1043:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7919,
                      "name": "_baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7896,
                      "src": "1053:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      }
                    },
                    "src": "1043:18:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "id": 7921,
                  "nodeType": "ExpressionStatement",
                  "src": "1043:18:47"
                }
              ]
            },
            "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": 7923,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7894,
                  "name": "_baseKernel",
                  "nodeType": "VariableDeclaration",
                  "scope": 7923,
                  "src": "756:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$8231",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7893,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8231,
                    "src": "756:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$8231",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7896,
                  "name": "_baseACL",
                  "nodeType": "VariableDeclaration",
                  "scope": 7923,
                  "src": "777:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$5304",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7895,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5304,
                    "src": "777:4:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7898,
                  "name": "_regFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 7923,
                  "src": "792:36:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                    "typeString": "contract EVMScriptRegistryFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7897,
                    "name": "EVMScriptRegistryFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8177,
                    "src": "792:24:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                      "typeString": "contract EVMScriptRegistryFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "755:74:47"
            },
            "payable": false,
            "returnParameters": {
              "id": 7900,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "837:0:47"
            },
            "scope": 8070,
            "src": "744:324:47",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8068,
              "nodeType": "Block",
              "src": "1326:1261:47",
              "statements": [
                {
                  "assignments": [
                    7931
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7931,
                      "name": "dao",
                      "nodeType": "VariableDeclaration",
                      "scope": 8069,
                      "src": "1336:10:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$8723",
                        "typeString": "contract Kernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7930,
                        "name": "Kernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8723,
                        "src": "1336:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$8723",
                          "typeString": "contract Kernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7938,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7935,
                            "name": "baseKernel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7880,
                            "src": "1372:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IKernel_$8231",
                              "typeString": "contract IKernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IKernel_$8231",
                              "typeString": "contract IKernel"
                            }
                          ],
                          "id": 7934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "1356:15:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_IKernel_$8231_$returns$_t_contract$_KernelProxy_$8813_$",
                            "typeString": "function (contract IKernel) returns (contract KernelProxy)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7933,
                            "name": "KernelProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8813,
                            "src": "1360:11:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KernelProxy_$8813",
                              "typeString": "contract KernelProxy"
                            }
                          }
                        },
                        "id": 7936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1356:27:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KernelProxy_$8813",
                          "typeString": "contract KernelProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KernelProxy_$8813",
                          "typeString": "contract KernelProxy"
                        }
                      ],
                      "id": 7932,
                      "name": "Kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8723,
                      "src": "1349:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Kernel_$8723_$",
                        "typeString": "type(contract Kernel)"
                      }
                    },
                    "id": 7937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1349:35:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1336:48:47"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7940,
                          "name": "regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7884,
                          "src": "1407:10:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 7939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1399:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7941,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1399:19:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1430:1:47",
                          "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": 7942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1422:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1422:10:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1399:33:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8058,
                    "nodeType": "Block",
                    "src": "1495:1026:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7957,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7882,
                              "src": "1524:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7958,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10523,
                              "src": "1533:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7954,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1509:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 7956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8330,
                            "src": "1509:14:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$5304_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 7959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1509:29:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7960,
                        "nodeType": "ExpressionStatement",
                        "src": "1509:29:47"
                      },
                      {
                        "assignments": [
                          7962
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7962,
                            "name": "acl",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1553:7:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$4783",
                              "typeString": "contract ACL"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7961,
                              "name": "ACL",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4783,
                              "src": "1553:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7968,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7964,
                                  "name": "dao",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7931,
                                  "src": "1567:3:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Kernel_$8723",
                                    "typeString": "contract Kernel"
                                  }
                                },
                                "id": 7965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "acl",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8593,
                                "src": "1567:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$5304_$",
                                  "typeString": "function () view external returns (contract IACL)"
                                }
                              },
                              "id": 7966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1567:9:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            ],
                            "id": 7963,
                            "name": "ACL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4783,
                            "src": "1563:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ACL_$4783_$",
                              "typeString": "type(contract ACL)"
                            }
                          },
                          "id": 7967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1563:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$4783",
                            "typeString": "contract ACL"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1553:24:47"
                      },
                      {
                        "assignments": [
                          7970
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7970,
                            "name": "permRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1591:16:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7969,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1591:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7974,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7971,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1610:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 7972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "CREATE_PERMISSIONS_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3507,
                            "src": "1610:27:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 7973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1610:29:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1591:48:47"
                      },
                      {
                        "assignments": [
                          7976
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7976,
                            "name": "appManagerRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1653:22:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7975,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1653:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7980,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7977,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1678:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 7978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "APP_MANAGER_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8265,
                            "src": "1678:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 7979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1678:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1653:47:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7984,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "1735:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7985,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1747:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7986,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "1752:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7981,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1715:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 7983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3730,
                            "src": "1715:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 7987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1715:46:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7988,
                        "nodeType": "ExpressionStatement",
                        "src": "1715:46:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7992,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "1797:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7993,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1809:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7994,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7976,
                              "src": "1814:14:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7995,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10523,
                              "src": "1830:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7989,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1776:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 7991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3709,
                            "src": "1776:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,address,bytes32,address) external"
                            }
                          },
                          "id": 7996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1776:59:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7997,
                        "nodeType": "ExpressionStatement",
                        "src": "1776:59:47"
                      },
                      {
                        "assignments": [
                          7999
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7999,
                            "name": "reg",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1850:21:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7998,
                              "name": "EVMScriptRegistry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7288,
                              "src": "1850:17:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8004,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8002,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1906:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8000,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "1874:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            "id": 8001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newEVMScriptRegistry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8176,
                            "src": "1874:31:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Kernel_$8723_$returns$_t_contract$_EVMScriptRegistry_$7288_$",
                              "typeString": "function (contract Kernel) external returns (contract EVMScriptRegistry)"
                            }
                          },
                          "id": 8003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1874:36:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1850:60:47"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8007,
                                  "name": "reg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7999,
                                  "src": "1961:3:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                ],
                                "id": 8006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1953:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 8008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1953:12:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8005,
                            "name": "DeployEVMScriptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7892,
                            "src": "1929:23:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1929:37:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8010,
                        "nodeType": "EmitStatement",
                        "src": "1924:42:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8014,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "2098:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8015,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "2110:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8016,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7976,
                              "src": "2115:14:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8011,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2077:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "2077:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2077:53:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8018,
                        "nodeType": "ExpressionStatement",
                        "src": "2077:53:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8022,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "2172:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8023,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7976,
                              "src": "2177:14:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8019,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2144:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removePermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3827,
                            "src": "2144:27:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32) external"
                            }
                          },
                          "id": 8024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2144:48:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8025,
                        "nodeType": "ExpressionStatement",
                        "src": "2144:48:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8029,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "2314:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8030,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2326:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8031,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2331:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8026,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2293:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "2293:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2293:47:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8033,
                        "nodeType": "ExpressionStatement",
                        "src": "2293:47:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8037,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10523,
                              "src": "2375:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8038,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2381:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8039,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2386:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8034,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2354:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "2354:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2354:41:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8041,
                        "nodeType": "ExpressionStatement",
                        "src": "2354:41:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8045,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "2429:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8046,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2436:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8047,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2441:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8042,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2409:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3730,
                            "src": "2409:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2409:41:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8049,
                        "nodeType": "ExpressionStatement",
                        "src": "2409:41:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8053,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "2489:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8054,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2496:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8055,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2501:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8050,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2464:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3807,
                            "src": "2464:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2464:46:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8057,
                        "nodeType": "ExpressionStatement",
                        "src": "2464:46:47"
                      }
                    ]
                  },
                  "id": 8059,
                  "nodeType": "IfStatement",
                  "src": "1395:1126:47",
                  "trueBody": {
                    "id": 7953,
                    "nodeType": "Block",
                    "src": "1434:55:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7949,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7882,
                              "src": "1463:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7950,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "1472:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7946,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1448:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 7948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8330,
                            "src": "1448:14:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$5304_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 7951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1448:30:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7952,
                        "nodeType": "ExpressionStatement",
                        "src": "1448:30:47"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8062,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7931,
                            "src": "2554:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          ],
                          "id": 8061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2546:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2546:12:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8060,
                      "name": "DeployDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7888,
                      "src": "2536:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 8064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2536:23:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8065,
                  "nodeType": "EmitStatement",
                  "src": "2531:28:47"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8066,
                    "name": "dao",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7931,
                    "src": "2577:3:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "functionReturnParameters": 7929,
                  "id": 8067,
                  "nodeType": "Return",
                  "src": "2570:10:47"
                }
              ]
            },
            "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": 8069,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7925,
                  "name": "_root",
                  "nodeType": "VariableDeclaration",
                  "scope": 8069,
                  "src": "1287:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1286:15:47"
            },
            "payable": false,
            "returnParameters": {
              "id": 7929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7928,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8069,
                  "src": "1318:6:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$8723",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7927,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8723,
                    "src": "1318:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1317:8:47"
            },
            "scope": 8070,
            "src": "1271:1316:47",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 8071,
        "src": "220:2369:47"
      }
    ],
    "src": "0:2590:47"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
    "exportedSymbols": {
      "DAOFactory": [
        8070
      ]
    },
    "id": 8071,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7872,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:47"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "../kernel/IKernel.sol",
        "id": 7873,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8232,
        "src": "25:31:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 7874,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8724,
        "src": "57:30:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
        "file": "../kernel/KernelProxy.sol",
        "id": 7875,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8814,
        "src": "88:35:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 7876,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 5305,
        "src": "125:25:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 7877,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 4784,
        "src": "151:24:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
        "file": "./EVMScriptRegistryFactory.sol",
        "id": 7878,
        "nodeType": "ImportDirective",
        "scope": 8071,
        "sourceUnit": 8178,
        "src": "177:40:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          8813
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8070,
        "linearizedBaseContracts": [
          8070
        ],
        "name": "DAOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 7880,
            "name": "baseKernel",
            "nodeType": "VariableDeclaration",
            "scope": 8070,
            "src": "246:25:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IKernel_$8231",
              "typeString": "contract IKernel"
            },
            "typeName": {
              "contractScope": null,
              "id": 7879,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8231,
              "src": "246:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$8231",
                "typeString": "contract IKernel"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7882,
            "name": "baseACL",
            "nodeType": "VariableDeclaration",
            "scope": 8070,
            "src": "277:19:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IACL_$5304",
              "typeString": "contract IACL"
            },
            "typeName": {
              "contractScope": null,
              "id": 7881,
              "name": "IACL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5304,
              "src": "277:4:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IACL_$5304",
                "typeString": "contract IACL"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7884,
            "name": "regFactory",
            "nodeType": "VariableDeclaration",
            "scope": 8070,
            "src": "302:42:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
              "typeString": "contract EVMScriptRegistryFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 7883,
              "name": "EVMScriptRegistryFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8177,
              "src": "302:24:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                "typeString": "contract EVMScriptRegistryFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7888,
            "name": "DeployDAO",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7886,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 7888,
                  "src": "367:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7885,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:13:47"
            },
            "src": "351:29:47"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7892,
            "name": "DeployEVMScriptRegistry",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7891,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7890,
                  "indexed": false,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 7892,
                  "src": "415:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7889,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "415:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "414:13:47"
            },
            "src": "385:43:47"
          },
          {
            "body": {
              "id": 7922,
              "nodeType": "Block",
              "src": "837:231:47",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7902,
                          "name": "_regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7898,
                          "src": "922:11:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 7901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "914:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "914:20:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "946:1:47",
                          "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": 7904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "938:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "938:10:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "914:34:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7913,
                  "nodeType": "IfStatement",
                  "src": "910:89:47",
                  "trueBody": {
                    "id": 7912,
                    "nodeType": "Block",
                    "src": "950:49:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7908,
                            "name": "regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7884,
                            "src": "964:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 7909,
                            "name": "_regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7898,
                            "src": "977:11:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "src": "964:24:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        },
                        "id": 7911,
                        "nodeType": "ExpressionStatement",
                        "src": "964:24:47"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7914,
                      "name": "baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7880,
                      "src": "1009:10:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$8231",
                        "typeString": "contract IKernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7915,
                      "name": "_baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7894,
                      "src": "1022:11:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$8231",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "1009:24:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$8231",
                      "typeString": "contract IKernel"
                    }
                  },
                  "id": 7917,
                  "nodeType": "ExpressionStatement",
                  "src": "1009:24:47"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7918,
                      "name": "baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7882,
                      "src": "1043:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7919,
                      "name": "_baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7896,
                      "src": "1053:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      }
                    },
                    "src": "1043:18:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "id": 7921,
                  "nodeType": "ExpressionStatement",
                  "src": "1043:18:47"
                }
              ]
            },
            "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": 7923,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7894,
                  "name": "_baseKernel",
                  "nodeType": "VariableDeclaration",
                  "scope": 7923,
                  "src": "756:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$8231",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7893,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8231,
                    "src": "756:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$8231",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7896,
                  "name": "_baseACL",
                  "nodeType": "VariableDeclaration",
                  "scope": 7923,
                  "src": "777:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$5304",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7895,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5304,
                    "src": "777:4:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7898,
                  "name": "_regFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 7923,
                  "src": "792:36:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                    "typeString": "contract EVMScriptRegistryFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7897,
                    "name": "EVMScriptRegistryFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8177,
                    "src": "792:24:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                      "typeString": "contract EVMScriptRegistryFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "755:74:47"
            },
            "payable": false,
            "returnParameters": {
              "id": 7900,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "837:0:47"
            },
            "scope": 8070,
            "src": "744:324:47",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8068,
              "nodeType": "Block",
              "src": "1326:1261:47",
              "statements": [
                {
                  "assignments": [
                    7931
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7931,
                      "name": "dao",
                      "nodeType": "VariableDeclaration",
                      "scope": 8069,
                      "src": "1336:10:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$8723",
                        "typeString": "contract Kernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7930,
                        "name": "Kernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8723,
                        "src": "1336:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$8723",
                          "typeString": "contract Kernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7938,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7935,
                            "name": "baseKernel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7880,
                            "src": "1372:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IKernel_$8231",
                              "typeString": "contract IKernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IKernel_$8231",
                              "typeString": "contract IKernel"
                            }
                          ],
                          "id": 7934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "1356:15:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_IKernel_$8231_$returns$_t_contract$_KernelProxy_$8813_$",
                            "typeString": "function (contract IKernel) returns (contract KernelProxy)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7933,
                            "name": "KernelProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8813,
                            "src": "1360:11:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KernelProxy_$8813",
                              "typeString": "contract KernelProxy"
                            }
                          }
                        },
                        "id": 7936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1356:27:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KernelProxy_$8813",
                          "typeString": "contract KernelProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KernelProxy_$8813",
                          "typeString": "contract KernelProxy"
                        }
                      ],
                      "id": 7932,
                      "name": "Kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8723,
                      "src": "1349:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Kernel_$8723_$",
                        "typeString": "type(contract Kernel)"
                      }
                    },
                    "id": 7937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1349:35:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1336:48:47"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7940,
                          "name": "regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7884,
                          "src": "1407:10:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 7939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1399:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7941,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1399:19:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1430:1:47",
                          "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": 7942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1422:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 7944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1422:10:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1399:33:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8058,
                    "nodeType": "Block",
                    "src": "1495:1026:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7957,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7882,
                              "src": "1524:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7958,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10523,
                              "src": "1533:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7954,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1509:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 7956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8330,
                            "src": "1509:14:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$5304_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 7959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1509:29:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7960,
                        "nodeType": "ExpressionStatement",
                        "src": "1509:29:47"
                      },
                      {
                        "assignments": [
                          7962
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7962,
                            "name": "acl",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1553:7:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$4783",
                              "typeString": "contract ACL"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7961,
                              "name": "ACL",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4783,
                              "src": "1553:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7968,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7964,
                                  "name": "dao",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7931,
                                  "src": "1567:3:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Kernel_$8723",
                                    "typeString": "contract Kernel"
                                  }
                                },
                                "id": 7965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "acl",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8593,
                                "src": "1567:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$5304_$",
                                  "typeString": "function () view external returns (contract IACL)"
                                }
                              },
                              "id": 7966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1567:9:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            ],
                            "id": 7963,
                            "name": "ACL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4783,
                            "src": "1563:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ACL_$4783_$",
                              "typeString": "type(contract ACL)"
                            }
                          },
                          "id": 7967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1563:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$4783",
                            "typeString": "contract ACL"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1553:24:47"
                      },
                      {
                        "assignments": [
                          7970
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7970,
                            "name": "permRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1591:16:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7969,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1591:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7974,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7971,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1610:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 7972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "CREATE_PERMISSIONS_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3507,
                            "src": "1610:27:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 7973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1610:29:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1591:48:47"
                      },
                      {
                        "assignments": [
                          7976
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7976,
                            "name": "appManagerRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1653:22:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7975,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1653:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7980,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7977,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1678:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 7978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "APP_MANAGER_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8265,
                            "src": "1678:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 7979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1678:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1653:47:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7984,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "1735:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7985,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1747:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7986,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "1752:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7981,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1715:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 7983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3730,
                            "src": "1715:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 7987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1715:46:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7988,
                        "nodeType": "ExpressionStatement",
                        "src": "1715:46:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7992,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "1797:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7993,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1809:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7994,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7976,
                              "src": "1814:14:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7995,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10523,
                              "src": "1830:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7989,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "1776:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 7991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3709,
                            "src": "1776:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,address,bytes32,address) external"
                            }
                          },
                          "id": 7996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1776:59:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7997,
                        "nodeType": "ExpressionStatement",
                        "src": "1776:59:47"
                      },
                      {
                        "assignments": [
                          7999
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7999,
                            "name": "reg",
                            "nodeType": "VariableDeclaration",
                            "scope": 8069,
                            "src": "1850:21:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7998,
                              "name": "EVMScriptRegistry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7288,
                              "src": "1850:17:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8004,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8002,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1906:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8000,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "1874:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            "id": 8001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newEVMScriptRegistry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8176,
                            "src": "1874:31:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Kernel_$8723_$returns$_t_contract$_EVMScriptRegistry_$7288_$",
                              "typeString": "function (contract Kernel) external returns (contract EVMScriptRegistry)"
                            }
                          },
                          "id": 8003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1874:36:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1850:60:47"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8007,
                                  "name": "reg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7999,
                                  "src": "1961:3:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                ],
                                "id": 8006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1953:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 8008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1953:12:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8005,
                            "name": "DeployEVMScriptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7892,
                            "src": "1929:23:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1929:37:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8010,
                        "nodeType": "EmitStatement",
                        "src": "1924:42:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8014,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "2098:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8015,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "2110:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8016,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7976,
                              "src": "2115:14:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8011,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2077:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "2077:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2077:53:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8018,
                        "nodeType": "ExpressionStatement",
                        "src": "2077:53:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8022,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "2172:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8023,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7976,
                              "src": "2177:14:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8019,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2144:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removePermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3827,
                            "src": "2144:27:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32) external"
                            }
                          },
                          "id": 8024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2144:48:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8025,
                        "nodeType": "ExpressionStatement",
                        "src": "2144:48:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8029,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7884,
                              "src": "2314:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8030,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2326:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8031,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2331:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8026,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2293:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "2293:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2293:47:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8033,
                        "nodeType": "ExpressionStatement",
                        "src": "2293:47:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8037,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10523,
                              "src": "2375:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8038,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2381:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8039,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2386:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$8070",
                                "typeString": "contract DAOFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8034,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2354:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "2354:20:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2354:41:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8041,
                        "nodeType": "ExpressionStatement",
                        "src": "2354:41:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8045,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "2429:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8046,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2436:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8047,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2441:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8042,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2409:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3730,
                            "src": "2409:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2409:41:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8049,
                        "nodeType": "ExpressionStatement",
                        "src": "2409:41:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8053,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "2489:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8054,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2496:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8055,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7970,
                              "src": "2501:8:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8050,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "2464:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$4783",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 8052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3807,
                            "src": "2464:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 8056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2464:46:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8057,
                        "nodeType": "ExpressionStatement",
                        "src": "2464:46:47"
                      }
                    ]
                  },
                  "id": 8059,
                  "nodeType": "IfStatement",
                  "src": "1395:1126:47",
                  "trueBody": {
                    "id": 7953,
                    "nodeType": "Block",
                    "src": "1434:55:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7949,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7882,
                              "src": "1463:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7950,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "1472:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$5304",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7946,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "1448:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 7948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8330,
                            "src": "1448:14:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$5304_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 7951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1448:30:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7952,
                        "nodeType": "ExpressionStatement",
                        "src": "1448:30:47"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8062,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7931,
                            "src": "2554:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          ],
                          "id": 8061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2546:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2546:12:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8060,
                      "name": "DeployDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7888,
                      "src": "2536:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 8064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2536:23:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8065,
                  "nodeType": "EmitStatement",
                  "src": "2531:28:47"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8066,
                    "name": "dao",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7931,
                    "src": "2577:3:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "functionReturnParameters": 7929,
                  "id": 8067,
                  "nodeType": "Return",
                  "src": "2570:10:47"
                }
              ]
            },
            "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": 8069,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7925,
                  "name": "_root",
                  "nodeType": "VariableDeclaration",
                  "scope": 8069,
                  "src": "1287:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1286:15:47"
            },
            "payable": false,
            "returnParameters": {
              "id": 7929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7928,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8069,
                  "src": "1318:6:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$8723",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7927,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8723,
                    "src": "1318:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1317:8:47"
            },
            "scope": 8070,
            "src": "1271:1316:47",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 8071,
        "src": "220:2369:47"
      }
    ],
    "src": "0:2590:47"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.594Z",
  "devdoc": {
    "methods": {
      "newDAO(address)": {
        "params": {
          "_root": "Address that will be granted control to setup DAO permissions"
        },
        "return": "Newly created DAO"
      }
    }
  },
  "userdoc": {
    "methods": {
      "newDAO(address)": {
        "notice": "Create a new DAO with `_root` set as the initial admin"
      }
    }
  }
}