{
  "contractName": "EVMScriptRegistryFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "baseReg",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "baseCallScript",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_dao",
          "type": "address"
        }
      ],
      "name": "newEVMScriptRegistry",
      "outputs": [
        {
          "name": "reg",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"baseReg\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"newEVMScriptRegistry\",\"outputs\":[{\"name\":\"reg\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseCallScript\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{\"newEVMScriptRegistry(address)\":{\"params\":{\"_dao\":\"Kernel\"},\"return\":\"Installed EVMScriptRegistry\"}}},\"userdoc\":{\"methods\":{\"newEVMScriptRegistry(address)\":{\"notice\":\"Install a new pinned instance of EVMScriptRegistry on `_dao`.\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol\":\"EVMScriptRegistryFactory\"},\"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/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/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": "0x608060405234801561001057600080fd5b506100196100a0565b604051809103906000f080158015610035573d6000803e3d6000fd5b5060008054600160a060020a031916600160a060020a039290921691909117905561005e6100b0565b604051809103906000f08015801561007a573d6000803e3d6000fd5b5060018054600160a060020a031916600160a060020a03929092169190911790556100c0565b604051611c6e8061088d83390190565b604051610a9a806124fb83390190565b6107be806100cf6000396000f3006080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663127d679c811461005b57806333404143146100995780634de50a3a146100c7575b600080fd5b34801561006757600080fd5b506100706100dc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100a557600080fd5b5061007073ffffffffffffffffffffffffffffffffffffffff600435166100f8565b3480156100d357600080fd5b50610070610776565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8129fc1c000000000000000000000000000000000000000000000000000000001781526000805495517fc050a7a60000000000000000000000000000000000000000000000000000000081527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd6194810185815273ffffffffffffffffffffffffffffffffffffffff97881694820185905260016064830181905260806044840190815288516084850152885194998a98908c169763c050a7a697919690958b95939260a4909101918083838e5b838110156102125781810151838201526020016101fa565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561026157600080fd5b505af1158015610275573d6000803e3d6000fd5b505050506040513d602081101561028b57600080fd5b5051604080517fde287359000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff86169163de287359916004808201926020929091908290030181600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b505050506040513d602081101561032357600080fd5b5051604080517f19f3d10f000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff8084169263be0384789230928892908316916319f3d10f9160048083019260209291908290030181600087803b15801561039f57600080fd5b505af11580156103b3573d6000803e3d6000fd5b505050506040513d60208110156103c957600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561044a57600080fd5b505af115801561045e573d6000803e3d6000fd5b5050600154604080517f87a16f1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152905191871693506387a16f1292506024808201926020929091908290030181600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050506040513d602081101561050157600080fd5b5050604080517f19f3d10f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff80841692639d0effdb9230928892908316916319f3d10f916004808201926020929091908290030181600087803b15801561057b57600080fd5b505af115801561058f573d6000803e3d6000fd5b505050506040513d60208110156105a557600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201529051606480830192600092919082900301818387803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663a885508a848573ffffffffffffffffffffffffffffffffffffffff166319f3d10f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b505050506040513d60208110156106e357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff9093166004840152602483019190915251604480830192600092919082900301818387803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b505050505050919050565b60015473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a7230582033b08ba5e367ce82d8f412d191e18d1095ab2da27dac6006051c0762d4ea18cb00296080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062001c4e833981519152640100000000620015f86200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062001c4e833981519152826401000000006200194c6200023782021704565b50565b5490565b9055565b611a03806200024b6000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304bf2a7f811461010b5780630803fac01461018d57806319f3d10f146101b65780632914b9bd146101dd57806332f0a3b5146102365780635ca4d4bb1461024b5780637e7db6e11461026557806380afdea8146102935780638129fc1c146102a857806387a16f12146102bd5780638b3dd749146102eb5780639d4941d814610300578063a1658fad1461032e578063a479e508146103a2578063bd8fde1c146103b7578063cff606a0146103cc578063d4aae0c4146103e4578063de4796ed146103f9578063f97a05df1461040e575b600080fd5b34801561011757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506104569650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019957600080fd5b506101a26105a8565b604080519115158252519081900360200190f35b3480156101c257600080fd5b506101cb6105d1565b60408051918252519081900360200190f35b3480156101e957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506105f59650505050505050565b34801561024257600080fd5b50610164610701565b34801561025757600080fd5b5061026360043561079f565b005b34801561027157600080fd5b506101a273ffffffffffffffffffffffffffffffffffffffff600435166109b3565b34801561029f57600080fd5b506101cb6109b9565b3480156102b457600080fd5b506102636109e9565b3480156102c957600080fd5b506101cb73ffffffffffffffffffffffffffffffffffffffff60043516610a9d565b3480156102f757600080fd5b506101cb610c61565b34801561030c57600080fd5b5061026373ffffffffffffffffffffffffffffffffffffffff60043516610c8c565b34801561033a57600080fd5b5060408051602060046044358181013583810280860185019096528085526101a295833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750610fae9650505050505050565b3480156103ae57600080fd5b5061016461113e565b3480156103c357600080fd5b506101cb611200565b3480156103d857600080fd5b50610263600435611224565b3480156103f057600080fd5b506101646114ff565b34801561040557600080fd5b506101a261152a565b34801561041a57600080fd5b5061042660043561155b565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301528051918290030190f35b60008060006004845110156040805190810160405280601e81526020017f45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254000081525090151561053c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610546846115a0565b63ffffffff1660008181526001602052604090208054919350915074010000000000000000000000000000000000000000900460ff166105875760006105a0565b805473ffffffffffffffffffffffffffffffffffffffff165b949350505050565b6000806105b3610c61565b905080158015906105cb5750806105c86115b3565b10155b91505090565b7fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed281565b60006105ff61113e565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561068357818101518382015260200161066b565b50505050905090810190601f1680156106b05780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156106cf57600080fd5b505af11580156106e3573d6000803e3d6000fd5b505050506040513d60208110156106f957600080fd5b505192915050565b600061070b6114ff565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5051905090565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36107cb836115b7565b6107d6338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610873576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008481526001602090815260409182902080548351808501909452601884527f45564d5245475f4558454355544f525f44495341424c4544000000000000000092840192909252945074010000000000000000000000000000000000000000900460ff161515610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5082547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116845560405173ffffffffffffffffffffffffffffffffffffffff9091169085907fc13cd9238f8ab1e5ab1f95cde77e89288fe5c328d04739adffd57b144b408fd190600090a350505050565b50600190565b60006109e47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6115f8565b905090565b6109f1610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610a966115fc565b6001600055565b6040805160008082526020820190925281907fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed290610ade9033908390610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50600080546001808201835560408051808201825273ffffffffffffffffffffffffffffffffffffffff808a168083526020808401868152878952959052838720925183549551151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff919093167fffffffffffffffffffffffff00000000000000000000000000000000000000009096169590951794909416179055519194509184917f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb566999190a35092915050565b60006109e47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6115f8565b6000806000610c9a846109b3565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610d40610701565b9250610d4b836116df565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5073ffffffffffffffffffffffffffffffffffffffff84161515610e53576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610e4d573d6000803e3d6000fd5b50610f43565b5082610e7b73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61171916565b9150610ea473ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61185216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080610fb96105a8565b1515610fc85760009150611136565b610fd06114ff565b905073ffffffffffffffffffffffffffffffffffffffff81161515610ff85760009150611136565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611020886118ea565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156110b85781810151838201526020016110a0565b50505050905090810190601f1680156110e55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d602081101561113157600080fd5b505191505b509392505050565b6000806111496114ff565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156106cf57600080fd5b7ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa381565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3611250836115b7565b61125b338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156112f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b508360008111801561130b575060005481105b60408051808201909152601a81527f45564d5245475f494e4558495354454e545f4558454355544f5200000000000060208201529015156113a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008581526001602090815260409182902080548351808501909452601784527f45564d5245475f4558454355544f525f454e41424c454400000000000000000092840192909252955074010000000000000000000000000000000000000000900460ff1615611475576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5083547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001780855560405173ffffffffffffffffffffffffffffffffffffffff9091169086907f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669990600090a35050505050565b60006109e47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6115f8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611555610c61565b14905090565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900460ff1682565b60006115ad8260006118f4565b92915050565b4390565b60408051600180825281830190925260609160208083019080388339019050509050818160008151811015156115e957fe5b60209081029091010152919050565b5490565b611604610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b506116d96116ac6115b3565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61194c16565b565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156117085760009150611713565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806117a68684611950565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611848576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906118e18582611981565b95945050505050565b8051602002815290565b60008061190184846119cf565b7c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000090911604949350505050565b9055565b6000806000806040516020818751602089018a5afa9250600083111561197557805191505b50909590945092505050565b6000806040516020818551602087016000895af160008111156119c5573d80156119b257602081146119bb576119c3565b600193506119c3565b600183511493505b505b5090949350505050565b0160200151905600a165627a7a7230582079959e429032044ca887606d4966d2e5941eda9ca04bb87dabd8d3b0b81b70800029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e608060405261001564010000000061001a810204565b610223565b61002b64010000000061011a810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156100c85781810151838201526020016100b0565b50505050905090810190601f1680156100f55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610118600019640100000000610145810204565b565b6000610140600080516020610a7a83398151915264010000000061080c61021b82021704565b905090565b61015664010000000061011a810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156101f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156100c85781810151838201526020016100b0565b50610218600080516020610a7a8339815191528264010000000061081861021f82021704565b50565b5490565b9055565b610848806102326000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac08114610071578063279cea351461009a5780638333d9b2146101475780638b3dd7491461016e578063de4796ed14610183575b600080fd5b34801561007d57600080fd5b50610086610198565b604080519115158252519081900360200190f35b3480156100a657600080fd5b506100d260246004803582810192908201359181358083019290820135916044359182019101356101c1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010c5781810151838201526020016100f4565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015357600080fd5b5061015c6106dc565b60408051918252519081900360200190f35b34801561017a57600080fd5b5061015c610700565b34801561018f57600080fd5b50610086610730565b6000806101a3610700565b905080158015906101bb5750806101b8610761565b10155b91505090565b606060008060008060008060006101d6610198565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a454400000000000000000000000060208201529015156102af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561027457818101518382015260200161025c565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600496505b8c8710156106cb5760408051808201909152601781527f45564d43414c4c535f494e56414c49445f4c454e47544800000000000000000060208201526018888f03101561035e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561027457818101518382015260200161025c565b506103a2878f8f8080601f01602080910402602001604051908101604052809392919081815260200183838082843750949594505063ffffffff6107651692505050565b9550600094505b888510156104b4578989868181106103bd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040805190810160405280601981526020017f45564d43414c4c535f424c41434b4c49535445445f43414c4c000000000000008152509015156104a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561027457818101518382015260200161025c565b506001909401936103a9565b60405173ffffffffffffffffffffffffffffffffffffffff871690309033907f9dcff9d94fbfdb4622d11edb383005f95e78efb446c72d92f8e615c6025c470390600090a461053f876014018f8f8080601f01602080910402602001604051908101604052809392919081815260200183838082843750949594505063ffffffff6107ad1692505050565b63ffffffff169350866014016004019250610593838f8f8080601f01602080910402602001604051908101604052809392919081815260200183838082843750949594505063ffffffff6108051692505050565b60408051808201909152601781527f45564d43414c4c535f494e56414c49445f4c454e475448000000000000000000602082015284860198509092508d881115610639576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561027457818101518382015260200161025c565b50600080858460008a6113885a03f19050808015610656576106c5565b6040513d8015610669573d6000833e3d82fd5b7f08c379a000000000000000000000000000000000000000000000000000000000825260206004830152601660248301527f45564d43414c4c535f43414c4c5f5245564552544544000000000000000000006044830152606482fd5b506102b5565b505050505050509695505050505050565b7f2dc858a00f3e417be1394b87c07158e989ec681ce8cc68a9093680ac1a87030290565b600061072b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e61080c565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61075b610700565b14905090565b4390565b6000806107728484610810565b6c010000000000000000000000007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090911604949350505050565b6000806107ba8484610810565b7c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000090911604949350505050565b0160200190565b5490565b016020015190565b90555600a165627a7a72305820ab9e75a00e63cfcfbd1642fb842561c2da9bc206c48478d9b37a4ec20a9ea6170029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663127d679c811461005b57806333404143146100995780634de50a3a146100c7575b600080fd5b34801561006757600080fd5b506100706100dc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100a557600080fd5b5061007073ffffffffffffffffffffffffffffffffffffffff600435166100f8565b3480156100d357600080fd5b50610070610776565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8129fc1c000000000000000000000000000000000000000000000000000000001781526000805495517fc050a7a60000000000000000000000000000000000000000000000000000000081527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd6194810185815273ffffffffffffffffffffffffffffffffffffffff97881694820185905260016064830181905260806044840190815288516084850152885194998a98908c169763c050a7a697919690958b95939260a4909101918083838e5b838110156102125781810151838201526020016101fa565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561026157600080fd5b505af1158015610275573d6000803e3d6000fd5b505050506040513d602081101561028b57600080fd5b5051604080517fde287359000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff86169163de287359916004808201926020929091908290030181600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b505050506040513d602081101561032357600080fd5b5051604080517f19f3d10f000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff8084169263be0384789230928892908316916319f3d10f9160048083019260209291908290030181600087803b15801561039f57600080fd5b505af11580156103b3573d6000803e3d6000fd5b505050506040513d60208110156103c957600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201523060648201529051608480830192600092919082900301818387803b15801561044a57600080fd5b505af115801561045e573d6000803e3d6000fd5b5050600154604080517f87a16f1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152905191871693506387a16f1292506024808201926020929091908290030181600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050506040513d602081101561050157600080fd5b5050604080517f19f3d10f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff80841692639d0effdb9230928892908316916319f3d10f916004808201926020929091908290030181600087803b15801561057b57600080fd5b505af115801561058f573d6000803e3d6000fd5b505050506040513d60208110156105a557600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff948516600482015292909316602483015260448201529051606480830192600092919082900301818387803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663a885508a848573ffffffffffffffffffffffffffffffffffffffff166319f3d10f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b505050506040513d60208110156106e357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff9093166004840152602483019190915251604480830192600092919082900301818387803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b505050505050919050565b60015473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a7230582033b08ba5e367ce82d8f412d191e18d1095ab2da27dac6006051c0762d4ea18cb0029",
  "sourceMap": "225:1215:48:-;;;448:135;8:9:-1;5:2;;;30:1;27;20:12;5:2;448:135:48;489:23;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;479:7:48;:33;;-1:-1:-1;;;;;;479:33:48;-1:-1:-1;;;;;479:33:48;;;;;;;;;;558:17;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;522:14:48;:54;;-1:-1:-1;;;;;;522:54:48;-1:-1:-1;;;;;522:54:48;;;;;;;;;;225:1215;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "225:1215:48:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;295:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;295:32:48;;;;;;;;;;;;;;;;;;;;;;;747:691;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;747:691:48;;;;;;;333:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;333:40:48;;;;295:32;;;;;;:::o;747:691::-;866:47;;;22:32:-1;6:49;;;866:47:48;;;;;;49:4:-1;25:18;;61:17;;866:47:48;182:15:-1;889:23:48;179:29:-1;160:49;;806:21:48;1000:7;;947:80;;;;;330:66:42;947:80:48;;;;;;889:14;1000:7;;;947:80;;;;;;973:25;947:80;;;;;;;;;;;;;;;;;;;;;806:21;;;;947:25;;;;;;330:66:42;;1000:7:48;;866:47;;947:80;;;;;;;;;25:18:-1;806:21:48;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;947:80:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;947:80:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;947:80:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;947:80:48;1053:10;;;;;;;;947:80;;-1:-1:-1;1053:8:48;;;;;;:10;;;;;947:80;;1053:10;;;;;;;;;:8;:10;;;5:2:-1;;;;30:1;27;20:12;5:2;1053:10:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1053:10:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1053:10:48;1107:32;;;;;;;;1053:10;;-1:-1:-1;1075:20:48;;;;;;;1096:4;;1102:3;;1107:30;;;;;;:32;;;;;1053:10;;1107:32;;;;;;;;:30;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;1107:32:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1107:32:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1107:32:48;1075:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1141:4;1075:71;;;;;;;;;;;-1:-1:-1;;1075:71:48;;;;;;;-1:-1:-1;1075:71:48;;;;5:2:-1;;;;30:1;27;20:12;5:2;1075:71:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1179:14:48;;1157:37;;;;;;:21;1179:14;;;1157:37;;;;;;:21;;;;-1:-1:-1;1157:21:48;;-1:-1:-1;1157:37:48;;;;;;;;;;;;;;;1179:14;1157:21;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1157:37:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1157:37:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;1301:32:48;;;;;;;;1269:20;;;;;;;1290:4;;1296:3;;1301:30;;;;;;:32;;;;;1157:37;;1301:32;;;;;;;;;:30;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;1301:32:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1301:32:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1301:32:48;1269:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:65:48;;;;;;;-1:-1:-1;1269:65:48;;;;5:2:-1;;;;30:1;27;20:12;5:2;1269:65:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1269:65:48;;;;1344:3;:27;;;1372:3;1377;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1377:32:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1377:32:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1377:32:48;1344:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1344:66:48;;;;;;;-1:-1:-1;1344:66:48;;;;5:2:-1;;;;30:1;27;20:12;5:2;1344:66:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;747:691:48;;;;;:::o;333:40::-;;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"../evmscript/IEVMScriptExecutor.sol\";\nimport \"../evmscript/EVMScriptRegistry.sol\";\n\nimport \"../evmscript/executors/CallsScript.sol\";\n\nimport \"../kernel/Kernel.sol\";\nimport \"../acl/ACL.sol\";\n\n\ncontract EVMScriptRegistryFactory is EVMScriptRegistryConstants {\n    EVMScriptRegistry public baseReg;\n    IEVMScriptExecutor public baseCallScript;\n\n    /**\n    * @notice Create a new EVMScriptRegistryFactory.\n    */\n    constructor() public {\n        baseReg = new EVMScriptRegistry();\n        baseCallScript = IEVMScriptExecutor(new CallsScript());\n    }\n\n    /**\n    * @notice Install a new pinned instance of EVMScriptRegistry on `_dao`.\n    * @param _dao Kernel\n    * @return Installed EVMScriptRegistry\n    */\n    function newEVMScriptRegistry(Kernel _dao) public returns (EVMScriptRegistry reg) {\n        bytes memory initPayload = abi.encodeWithSelector(reg.initialize.selector);\n        reg = EVMScriptRegistry(_dao.newPinnedAppInstance(EVMSCRIPT_REGISTRY_APP_ID, baseReg, initPayload, true));\n\n        ACL acl = ACL(_dao.acl());\n\n        acl.createPermission(this, reg, reg.REGISTRY_ADD_EXECUTOR_ROLE(), this);\n\n        reg.addScriptExecutor(baseCallScript);     // spec 1 = CallsScript\n\n        // Clean up the permissions\n        acl.revokePermission(this, reg, reg.REGISTRY_ADD_EXECUTOR_ROLE());\n        acl.removePermissionManager(reg, reg.REGISTRY_ADD_EXECUTOR_ROLE());\n\n        return reg;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
    "exportedSymbols": {
      "EVMScriptRegistryFactory": [
        8177
      ]
    },
    "id": 8178,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8072,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:48"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "../evmscript/IEVMScriptExecutor.sol",
        "id": 8073,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 7475,
        "src": "25:45:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
        "file": "../evmscript/EVMScriptRegistry.sol",
        "id": 8074,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 7289,
        "src": "71:44:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/executors/CallsScript.sol",
        "file": "../evmscript/executors/CallsScript.sol",
        "id": 8075,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 7758,
        "src": "117:48:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 8076,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 8724,
        "src": "167:30:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 8077,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 4784,
        "src": "198:24:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8078,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7481,
              "src": "262:26:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$7481",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 8079,
            "nodeType": "InheritanceSpecifier",
            "src": "262:26:48"
          }
        ],
        "contractDependencies": [
          7288,
          7481,
          7757
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8177,
        "linearizedBaseContracts": [
          8177,
          7481
        ],
        "name": "EVMScriptRegistryFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 8081,
            "name": "baseReg",
            "nodeType": "VariableDeclaration",
            "scope": 8177,
            "src": "295:32:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
              "typeString": "contract EVMScriptRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 8080,
              "name": "EVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7288,
              "src": "295:17:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                "typeString": "contract EVMScriptRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 8083,
            "name": "baseCallScript",
            "nodeType": "VariableDeclaration",
            "scope": 8177,
            "src": "333:40:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
              "typeString": "contract IEVMScriptExecutor"
            },
            "typeName": {
              "contractScope": null,
              "id": 8082,
              "name": "IEVMScriptExecutor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7474,
              "src": "333:18:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                "typeString": "contract IEVMScriptExecutor"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8100,
              "nodeType": "Block",
              "src": "469:114:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8086,
                      "name": "baseReg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8081,
                      "src": "479:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 8088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "489:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_EVMScriptRegistry_$7288_$",
                          "typeString": "function () returns (contract EVMScriptRegistry)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8087,
                          "name": "EVMScriptRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7288,
                          "src": "493:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        }
                      },
                      "id": 8089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "489:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "src": "479:33:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "id": 8091,
                  "nodeType": "ExpressionStatement",
                  "src": "479:33:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8092,
                      "name": "baseCallScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8083,
                      "src": "522:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "558:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_CallsScript_$7757_$",
                              "typeString": "function () returns (contract CallsScript)"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8094,
                              "name": "CallsScript",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7757,
                              "src": "562:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CallsScript_$7757",
                                "typeString": "contract CallsScript"
                              }
                            }
                          },
                          "id": 8096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "558:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CallsScript_$7757",
                            "typeString": "contract CallsScript"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_CallsScript_$7757",
                            "typeString": "contract CallsScript"
                          }
                        ],
                        "id": 8093,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7474,
                        "src": "539:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$7474_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 8097,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "539:37:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "src": "522:54:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "id": 8099,
                  "nodeType": "ExpressionStatement",
                  "src": "522:54:48"
                }
              ]
            },
            "documentation": "@notice Create a new EVMScriptRegistryFactory.",
            "id": 8101,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8084,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "459:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 8085,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "469:0:48"
            },
            "scope": 8177,
            "src": "448:135:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8175,
              "nodeType": "Block",
              "src": "829:609:48",
              "statements": [
                {
                  "assignments": [
                    8109
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8109,
                      "name": "initPayload",
                      "nodeType": "VariableDeclaration",
                      "scope": 8176,
                      "src": "839:24:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8108,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "839:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8116,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8112,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "889:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initialize",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7142,
                          "src": "889:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                            "typeString": "function () external"
                          }
                        },
                        "id": 8114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "889:23:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8110,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10391,
                        "src": "866:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 8111,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "866:22:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 8115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "866:47:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "839:74:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8117,
                      "name": "reg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8106,
                      "src": "923:3:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8121,
                              "name": "EVMSCRIPT_REGISTRY_APP_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7480,
                              "src": "973:25:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8122,
                              "name": "baseReg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8081,
                              "src": "1000:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8123,
                              "name": "initPayload",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8109,
                              "src": "1009:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 8124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1022:4:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                "typeString": "contract EVMScriptRegistry"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8119,
                              "name": "_dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8103,
                              "src": "947:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 8120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newPinnedAppInstance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8472,
                            "src": "947:25:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$9856_$",
                              "typeString": "function (bytes32,address,bytes memory,bool) external returns (contract ERCProxy)"
                            }
                          },
                          "id": 8125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "947:80:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ERCProxy_$9856",
                            "typeString": "contract ERCProxy"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ERCProxy_$9856",
                            "typeString": "contract ERCProxy"
                          }
                        ],
                        "id": 8118,
                        "name": "EVMScriptRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7288,
                        "src": "929:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EVMScriptRegistry_$7288_$",
                          "typeString": "type(contract EVMScriptRegistry)"
                        }
                      },
                      "id": 8126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "929:99:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "src": "923:105:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "id": 8128,
                  "nodeType": "ExpressionStatement",
                  "src": "923:105:48"
                },
                {
                  "assignments": [
                    8130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8130,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 8176,
                      "src": "1039:7:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ACL_$4783",
                        "typeString": "contract ACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8129,
                        "name": "ACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4783,
                        "src": "1039:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8136,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8132,
                            "name": "_dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8103,
                            "src": "1053:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 8133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "acl",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8593,
                          "src": "1053:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$5304_$",
                            "typeString": "function () view external returns (contract IACL)"
                          }
                        },
                        "id": 8134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1053:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 8131,
                      "name": "ACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4783,
                      "src": "1049:3:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ACL_$4783_$",
                        "typeString": "type(contract ACL)"
                      }
                    },
                    "id": 8135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1049:15:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$4783",
                      "typeString": "contract ACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1039:25:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8140,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10521,
                        "src": "1096:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8141,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1102:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8142,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "1107:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "REGISTRY_ADD_EXECUTOR_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7071,
                          "src": "1107:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 8144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1107:32:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8145,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10521,
                        "src": "1141:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        },
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8137,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "1075:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 8139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3709,
                      "src": "1075:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 8146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1075:71:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8147,
                  "nodeType": "ExpressionStatement",
                  "src": "1075:71:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8151,
                        "name": "baseCallScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8083,
                        "src": "1179:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8148,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1157:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      "id": 8150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addScriptExecutor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7174,
                      "src": "1157:21:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IEVMScriptExecutor_$7474_$returns$_t_uint256_$",
                        "typeString": "function (contract IEVMScriptExecutor) external returns (uint256)"
                      }
                    },
                    "id": 8152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1157:37:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8153,
                  "nodeType": "ExpressionStatement",
                  "src": "1157:37:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8157,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10521,
                        "src": "1290:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8158,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1296:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8159,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "1301:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "REGISTRY_ADD_EXECUTOR_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7071,
                          "src": "1301:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 8161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1301:32:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        },
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8154,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "1269:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 8156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "revokePermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3787,
                      "src": "1269:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 8162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1269:65:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8163,
                  "nodeType": "ExpressionStatement",
                  "src": "1269:65:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8167,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1372:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8168,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "1377:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "REGISTRY_ADD_EXECUTOR_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7071,
                          "src": "1377:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 8170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1377:32:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8164,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "1344:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 8166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removePermissionManager",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3827,
                      "src": "1344:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 8171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1344:66:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8172,
                  "nodeType": "ExpressionStatement",
                  "src": "1344:66:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8173,
                    "name": "reg",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8106,
                    "src": "1428:3:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 8107,
                  "id": 8174,
                  "nodeType": "Return",
                  "src": "1421:10:48"
                }
              ]
            },
            "documentation": "@notice Install a new pinned instance of EVMScriptRegistry on `_dao`.\n@param _dao Kernel\n@return Installed EVMScriptRegistry",
            "id": 8176,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8103,
                  "name": "_dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 8176,
                  "src": "777:11:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$8723",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8102,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8723,
                    "src": "777:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "776:13:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 8107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8106,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 8176,
                  "src": "806:21:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                    "typeString": "contract EVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8105,
                    "name": "EVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7288,
                    "src": "806:17:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "805:23:48"
            },
            "scope": 8177,
            "src": "747:691:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 8178,
        "src": "225:1215:48"
      }
    ],
    "src": "0:1441:48"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
    "exportedSymbols": {
      "EVMScriptRegistryFactory": [
        8177
      ]
    },
    "id": 8178,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8072,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:48"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "../evmscript/IEVMScriptExecutor.sol",
        "id": 8073,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 7475,
        "src": "25:45:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
        "file": "../evmscript/EVMScriptRegistry.sol",
        "id": 8074,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 7289,
        "src": "71:44:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/executors/CallsScript.sol",
        "file": "../evmscript/executors/CallsScript.sol",
        "id": 8075,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 7758,
        "src": "117:48:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 8076,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 8724,
        "src": "167:30:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 8077,
        "nodeType": "ImportDirective",
        "scope": 8178,
        "sourceUnit": 4784,
        "src": "198:24:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8078,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7481,
              "src": "262:26:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$7481",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 8079,
            "nodeType": "InheritanceSpecifier",
            "src": "262:26:48"
          }
        ],
        "contractDependencies": [
          7288,
          7481,
          7757
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8177,
        "linearizedBaseContracts": [
          8177,
          7481
        ],
        "name": "EVMScriptRegistryFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 8081,
            "name": "baseReg",
            "nodeType": "VariableDeclaration",
            "scope": 8177,
            "src": "295:32:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
              "typeString": "contract EVMScriptRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 8080,
              "name": "EVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7288,
              "src": "295:17:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                "typeString": "contract EVMScriptRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 8083,
            "name": "baseCallScript",
            "nodeType": "VariableDeclaration",
            "scope": 8177,
            "src": "333:40:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
              "typeString": "contract IEVMScriptExecutor"
            },
            "typeName": {
              "contractScope": null,
              "id": 8082,
              "name": "IEVMScriptExecutor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7474,
              "src": "333:18:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                "typeString": "contract IEVMScriptExecutor"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8100,
              "nodeType": "Block",
              "src": "469:114:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8086,
                      "name": "baseReg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8081,
                      "src": "479:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 8088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "489:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_EVMScriptRegistry_$7288_$",
                          "typeString": "function () returns (contract EVMScriptRegistry)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8087,
                          "name": "EVMScriptRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7288,
                          "src": "493:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        }
                      },
                      "id": 8089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "489:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "src": "479:33:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "id": 8091,
                  "nodeType": "ExpressionStatement",
                  "src": "479:33:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8092,
                      "name": "baseCallScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8083,
                      "src": "522:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "558:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_CallsScript_$7757_$",
                              "typeString": "function () returns (contract CallsScript)"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8094,
                              "name": "CallsScript",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7757,
                              "src": "562:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CallsScript_$7757",
                                "typeString": "contract CallsScript"
                              }
                            }
                          },
                          "id": 8096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "558:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_CallsScript_$7757",
                            "typeString": "contract CallsScript"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_CallsScript_$7757",
                            "typeString": "contract CallsScript"
                          }
                        ],
                        "id": 8093,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7474,
                        "src": "539:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$7474_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 8097,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "539:37:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "src": "522:54:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "id": 8099,
                  "nodeType": "ExpressionStatement",
                  "src": "522:54:48"
                }
              ]
            },
            "documentation": "@notice Create a new EVMScriptRegistryFactory.",
            "id": 8101,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8084,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "459:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 8085,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "469:0:48"
            },
            "scope": 8177,
            "src": "448:135:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8175,
              "nodeType": "Block",
              "src": "829:609:48",
              "statements": [
                {
                  "assignments": [
                    8109
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8109,
                      "name": "initPayload",
                      "nodeType": "VariableDeclaration",
                      "scope": 8176,
                      "src": "839:24:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8108,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "839:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8116,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8112,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "889:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initialize",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7142,
                          "src": "889:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                            "typeString": "function () external"
                          }
                        },
                        "id": 8114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "889:23:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8110,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10391,
                        "src": "866:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 8111,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "866:22:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 8115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "866:47:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "839:74:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8117,
                      "name": "reg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8106,
                      "src": "923:3:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8121,
                              "name": "EVMSCRIPT_REGISTRY_APP_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7480,
                              "src": "973:25:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8122,
                              "name": "baseReg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8081,
                              "src": "1000:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8123,
                              "name": "initPayload",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8109,
                              "src": "1009:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 8124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1022:4:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                                "typeString": "contract EVMScriptRegistry"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8119,
                              "name": "_dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8103,
                              "src": "947:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$8723",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 8120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newPinnedAppInstance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8472,
                            "src": "947:25:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$9856_$",
                              "typeString": "function (bytes32,address,bytes memory,bool) external returns (contract ERCProxy)"
                            }
                          },
                          "id": 8125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "947:80:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ERCProxy_$9856",
                            "typeString": "contract ERCProxy"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ERCProxy_$9856",
                            "typeString": "contract ERCProxy"
                          }
                        ],
                        "id": 8118,
                        "name": "EVMScriptRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7288,
                        "src": "929:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EVMScriptRegistry_$7288_$",
                          "typeString": "type(contract EVMScriptRegistry)"
                        }
                      },
                      "id": 8126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "929:99:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                        "typeString": "contract EVMScriptRegistry"
                      }
                    },
                    "src": "923:105:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "id": 8128,
                  "nodeType": "ExpressionStatement",
                  "src": "923:105:48"
                },
                {
                  "assignments": [
                    8130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8130,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 8176,
                      "src": "1039:7:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ACL_$4783",
                        "typeString": "contract ACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8129,
                        "name": "ACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4783,
                        "src": "1039:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8136,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8132,
                            "name": "_dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8103,
                            "src": "1053:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          },
                          "id": 8133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "acl",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8593,
                          "src": "1053:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$5304_$",
                            "typeString": "function () view external returns (contract IACL)"
                          }
                        },
                        "id": 8134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1053:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 8131,
                      "name": "ACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4783,
                      "src": "1049:3:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ACL_$4783_$",
                        "typeString": "type(contract ACL)"
                      }
                    },
                    "id": 8135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1049:15:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ACL_$4783",
                      "typeString": "contract ACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1039:25:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8140,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10521,
                        "src": "1096:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8141,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1102:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8142,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "1107:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "REGISTRY_ADD_EXECUTOR_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7071,
                          "src": "1107:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 8144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1107:32:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8145,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10521,
                        "src": "1141:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        },
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8137,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "1075:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 8139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3709,
                      "src": "1075:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (address,address,bytes32,address) external"
                      }
                    },
                    "id": 8146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1075:71:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8147,
                  "nodeType": "ExpressionStatement",
                  "src": "1075:71:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8151,
                        "name": "baseCallScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8083,
                        "src": "1179:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8148,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1157:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      "id": 8150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addScriptExecutor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7174,
                      "src": "1157:21:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IEVMScriptExecutor_$7474_$returns$_t_uint256_$",
                        "typeString": "function (contract IEVMScriptExecutor) external returns (uint256)"
                      }
                    },
                    "id": 8152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1157:37:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8153,
                  "nodeType": "ExpressionStatement",
                  "src": "1157:37:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8157,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10521,
                        "src": "1290:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8158,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1296:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8159,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "1301:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "REGISTRY_ADD_EXECUTOR_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7071,
                          "src": "1301:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 8161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1301:32:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$8177",
                          "typeString": "contract EVMScriptRegistryFactory"
                        },
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8154,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "1269:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 8156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "revokePermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3787,
                      "src": "1269:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,address,bytes32) external"
                      }
                    },
                    "id": 8162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1269:65:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8163,
                  "nodeType": "ExpressionStatement",
                  "src": "1269:65:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8167,
                        "name": "reg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8106,
                        "src": "1372:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8168,
                            "name": "reg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "1377:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                              "typeString": "contract EVMScriptRegistry"
                            }
                          },
                          "id": 8169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "REGISTRY_ADD_EXECUTOR_ROLE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7071,
                          "src": "1377:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view external returns (bytes32)"
                          }
                        },
                        "id": 8170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1377:32:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                          "typeString": "contract EVMScriptRegistry"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8164,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8130,
                        "src": "1344:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ACL_$4783",
                          "typeString": "contract ACL"
                        }
                      },
                      "id": 8166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removePermissionManager",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3827,
                      "src": "1344:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 8171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1344:66:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8172,
                  "nodeType": "ExpressionStatement",
                  "src": "1344:66:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8173,
                    "name": "reg",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8106,
                    "src": "1428:3:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 8107,
                  "id": 8174,
                  "nodeType": "Return",
                  "src": "1421:10:48"
                }
              ]
            },
            "documentation": "@notice Install a new pinned instance of EVMScriptRegistry on `_dao`.\n@param _dao Kernel\n@return Installed EVMScriptRegistry",
            "id": 8176,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8103,
                  "name": "_dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 8176,
                  "src": "777:11:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$8723",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8102,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8723,
                    "src": "777:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$8723",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "776:13:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 8107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8106,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 8176,
                  "src": "806:21:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                    "typeString": "contract EVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8105,
                    "name": "EVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7288,
                    "src": "806:17:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistry_$7288",
                      "typeString": "contract EVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "805:23:48"
            },
            "scope": 8177,
            "src": "747:691:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 8178,
        "src": "225:1215:48"
      }
    ],
    "src": "0:1441:48"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.596Z",
  "devdoc": {
    "methods": {
      "newEVMScriptRegistry(address)": {
        "params": {
          "_dao": "Kernel"
        },
        "return": "Installed EVMScriptRegistry"
      }
    }
  },
  "userdoc": {
    "methods": {
      "newEVMScriptRegistry(address)": {
        "notice": "Install a new pinned instance of EVMScriptRegistry on `_dao`."
      }
    }
  }
}