{
  "contractName": "EVMScriptRegistry",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REGISTRY_ADD_EXECUTOR_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REGISTRY_MANAGER_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "executors",
      "outputs": [
        {
          "name": "executor",
          "type": "address"
        },
        {
          "name": "enabled",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executorId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "executorAddress",
          "type": "address"
        }
      ],
      "name": "EnableExecutor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executorId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "executorAddress",
          "type": "address"
        }
      ],
      "name": "DisableExecutor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executor",
          "type": "address"
        }
      ],
      "name": "addScriptExecutor",
      "outputs": [
        {
          "name": "id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executorId",
          "type": "uint256"
        }
      ],
      "name": "disableScriptExecutor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executorId",
          "type": "uint256"
        }
      ],
      "name": "enableScriptExecutor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526200001d62000023640100000000026401000000009004565b62000309565b60006200003e6200015e640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a4544000000000000000081525090151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000e5578082015181840152602081019050620000c8565b50505050905090810190601f168015620001135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200015c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620001ab640100000000026401000000009004565b565b6000620001a67febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916620002f76401000000000262001d8c176401000000009004565b905090565b6000620001c66200015e640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515620002a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200026d57808201518184015260208101905062000250565b50505050905090810190601f1680156200029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620002f4817febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916620003026401000000000262001e4e179091906401000000009004565b50565b600081549050919050565b8082555050565b611e9280620003196000396000f300608060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304bf2a7f1461010c5780630803fac0146101b557806319f3d10f146101e45780632914b9bd1461021757806332f0a3b5146102c05780635ca4d4bb146103175780637e7db6e11461034457806380afdea81461039f5780638129fc1c146103d257806387a16f12146103e95780638b3dd749146104405780639d4941d81461046b578063a1658fad146104ae578063a479e5081461055a578063bd8fde1c146105b1578063cff606a0146105e4578063d4aae0c414610611578063de4796ed14610668578063f97a05df14610697575b600080fd5b34801561011857600080fd5b50610173600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061070f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610786565b604051808215151515815260200191505060405180910390f35b3480156101f057600080fd5b506101f96107b1565b60405180826000191660001916815260200191505060405180910390f35b34801561022357600080fd5b5061027e600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107d8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102cc57600080fd5b506102d56108f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032357600080fd5b50610342600480360381019080803590602001909291905050506109a4565b005b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c4e565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b506103b4610c59565b60405180826000191660001916815260200191505060405180910390f35b3480156103de57600080fd5b506103e7610c90565b005b3480156103f557600080fd5b5061042a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8c565b6040518082815260200191505060405180910390f35b34801561044c57600080fd5b50610455610fd8565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b506104ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061100f565b005b3480156104ba57600080fd5b50610540600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611441565b604051808215151515815260200191505060405180910390f35b34801561056657600080fd5b5061056f611648565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105bd57600080fd5b506105c6611763565b60405180826000191660001916815260200191505060405180910390f35b3480156105f057600080fd5b5061060f6004803603810190808035906020019092919050505061178a565b005b34801561061d57600080fd5b50610626611b27565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067457600080fd5b5061067d611b5e565b604051808215151515815260200191505060405180910390f35b3480156106a357600080fd5b506106c260048036038101908080359060200190929190505050611b8f565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390f35b600080600061071d84611be0565b63ffffffff1691506001600083815260200190815260200160002090508060000160149054906101000a900460ff1661075757600061077d565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b92505050919050565b600080610791610fd8565b9050600081141580156107ab5750806107a8611bf4565b10155b91505090565b7fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed260010281565b60006107e2611648565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086957808201518184015260208101905061084e565b50505050905090810190601f1680156108965780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156108b557600080fd5b505af11580156108c9573d6000803e3d6000fd5b505050506040513d60208110156108df57600080fd5b81019080805190602001909291905050509050919050565b6000610901611b27565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b8101908080519060200190929190505050905090565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36001026109d383611bfc565b6109de338383611441565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515610abc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a81578082015181840152602081019050610a66565b50505050905090810190601f168015610aae5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600085815260200190815260200160002092508260000160149054906101000a900460ff166040805190810160405280601881526020017f45564d5245475f4558454355544f525f44495341424c45440000000000000000815250901515610bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b87578082015181840152602081019050610b6c565b50505050905090810190601f168015610bb45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008360000160146101000a81548160ff0219169083151502179055508260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847fc13cd9238f8ab1e5ab1f95cde77e89288fe5c328d04739adffd57b144b408fd160405160405180910390a350505050565b600060019050919050565b6000610c8b7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b60010260001916611c54565b905090565b6000610c9a610fd8565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515610d79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d3e578082015181840152602081019050610d23565b50505050905090810190601f168015610d6b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610d82611c5f565b6001600081905550565b6000807fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2600102610dee33826000604051908082528060200260200182016040528015610de85781602001602082028038833980820191505090505b50611441565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515610ecc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e91578082015181840152602081019050610e76565b50505050905090810190601f168015610ebe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008081548092919060010191905055915060408051908101604052808573ffffffffffffffffffffffffffffffffffffffff168152602001600115158152506001600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055509050508373ffffffffffffffffffffffffffffffffffffffff16827f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669960405160405180910390a38192505050919050565b600061100a7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916611d8c565b905090565b60008061101b83610c4e565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f57454400000000000000000000000000008152509015156110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110be5780820151818401526020810190506110a3565b50505050905090810190601f1680156110eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506111026108f7565b915061110d82611d97565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000008152509015156111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111b0578082015181840152602081019050611195565b50505050905090810190601f1680156111dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611284578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561127e573d6000803e3d6000fd5b5061143c565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561131f57600080fd5b505af1158015611333573d6000803e3d6000fd5b505050506040513d602081101561134957600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ff57600080fd5b505af1158015611413573d6000803e3d6000fd5b505050506040513d602081101561142957600080fd5b8101908080519060200190929190505050505b505050565b60008060606000611450610786565b151561145f576000935061163e565b611467611b27565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114a7576000935061163e565b602085510290508491508082528273ffffffffffffffffffffffffffffffffffffffff1663fdef9106883089866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156115b1578082015181840152602081019050611596565b50505050905090810190601f1680156115de5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d602081101561162a57600080fd5b810190808051906020019092919050505093505b5050509392505050565b600080611653611b27565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561171f57600080fd5b505af1158015611733573d6000803e3d6000fd5b505050506040513d602081101561174957600080fd5b810190808051906020019092919050505090508091505090565b7ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa360010281565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36001026117b983611bfc565b6117c4338383611441565b6040805190810160405280600f81526020017f4150505f415554485f4641494c454400000000000000000000000000000000008152509015156118a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561186757808201518184015260208101905061184c565b50505050905090810190601f1680156118945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836000811180156118b5575060005481105b6040805190810160405280601a81526020017f45564d5245475f494e4558495354454e545f4558454355544f52000000000000815250901515611993576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561195857808201518184015260208101905061193d565b50505050905090810190601f1680156119855780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600086815260200190815260200160002093508360000160149054906101000a900460ff16156040805190810160405280601781526020017f45564d5245475f4558454355544f525f454e41424c4544000000000000000000815250901515611a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a5f578082015181840152602081019050611a44565b50505050905090810190601f168015611a8c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060018460000160146101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16857f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669960405160405180910390a35050505050565b6000611b597f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916611de9565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b89610fd8565b14905090565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16905082565b6000611bed826000611df4565b9050919050565b600043905090565b60606001604051908082528060200260200182016040528015611c2e5781602001602082028038833980820191505090505b50905081816000815181101515611c4157fe5b9060200190602002018181525050919050565b600081549050919050565b6000611c69610fd8565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515611d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d0d578082015181840152602081019050611cf2565b50505050905090810190601f168015611d3a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611d8a611d54611bf4565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916611e4e90919063ffffffff16565b565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd85760009150611de3565b823b90506000811191505b50919050565b600081549050919050565b600080611e018484611e55565b90507c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160491505092915050565b8082555050565b6000816020018301519050929150505600a165627a7a72305820f6de821ba13da33a6a3f25e07d05b2861370d1c1dfb01b6c6c98278148612e3c0029",
  "deployedBytecode": "0x608060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304bf2a7f1461010c5780630803fac0146101b557806319f3d10f146101e45780632914b9bd1461021757806332f0a3b5146102c05780635ca4d4bb146103175780637e7db6e11461034457806380afdea81461039f5780638129fc1c146103d257806387a16f12146103e95780638b3dd749146104405780639d4941d81461046b578063a1658fad146104ae578063a479e5081461055a578063bd8fde1c146105b1578063cff606a0146105e4578063d4aae0c414610611578063de4796ed14610668578063f97a05df14610697575b600080fd5b34801561011857600080fd5b50610173600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061070f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610786565b604051808215151515815260200191505060405180910390f35b3480156101f057600080fd5b506101f96107b1565b60405180826000191660001916815260200191505060405180910390f35b34801561022357600080fd5b5061027e600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107d8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102cc57600080fd5b506102d56108f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032357600080fd5b50610342600480360381019080803590602001909291905050506109a4565b005b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c4e565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b506103b4610c59565b60405180826000191660001916815260200191505060405180910390f35b3480156103de57600080fd5b506103e7610c90565b005b3480156103f557600080fd5b5061042a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8c565b6040518082815260200191505060405180910390f35b34801561044c57600080fd5b50610455610fd8565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b506104ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061100f565b005b3480156104ba57600080fd5b50610540600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611441565b604051808215151515815260200191505060405180910390f35b34801561056657600080fd5b5061056f611648565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105bd57600080fd5b506105c6611763565b60405180826000191660001916815260200191505060405180910390f35b3480156105f057600080fd5b5061060f6004803603810190808035906020019092919050505061178a565b005b34801561061d57600080fd5b50610626611b27565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067457600080fd5b5061067d611b5e565b604051808215151515815260200191505060405180910390f35b3480156106a357600080fd5b506106c260048036038101908080359060200190929190505050611b8f565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390f35b600080600061071d84611be0565b63ffffffff1691506001600083815260200190815260200160002090508060000160149054906101000a900460ff1661075757600061077d565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b92505050919050565b600080610791610fd8565b9050600081141580156107ab5750806107a8611bf4565b10155b91505090565b7fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed260010281565b60006107e2611648565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086957808201518184015260208101905061084e565b50505050905090810190601f1680156108965780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156108b557600080fd5b505af11580156108c9573d6000803e3d6000fd5b505050506040513d60208110156108df57600080fd5b81019080805190602001909291905050509050919050565b6000610901611b27565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b8101908080519060200190929190505050905090565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36001026109d383611bfc565b6109de338383611441565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515610abc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a81578082015181840152602081019050610a66565b50505050905090810190601f168015610aae5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600085815260200190815260200160002092508260000160149054906101000a900460ff166040805190810160405280601881526020017f45564d5245475f4558454355544f525f44495341424c45440000000000000000815250901515610bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b87578082015181840152602081019050610b6c565b50505050905090810190601f168015610bb45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008360000160146101000a81548160ff0219169083151502179055508260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847fc13cd9238f8ab1e5ab1f95cde77e89288fe5c328d04739adffd57b144b408fd160405160405180910390a350505050565b600060019050919050565b6000610c8b7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b60010260001916611c54565b905090565b6000610c9a610fd8565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515610d79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d3e578082015181840152602081019050610d23565b50505050905090810190601f168015610d6b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610d82611c5f565b6001600081905550565b6000807fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2600102610dee33826000604051908082528060200260200182016040528015610de85781602001602082028038833980820191505090505b50611441565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515610ecc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e91578082015181840152602081019050610e76565b50505050905090810190601f168015610ebe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008081548092919060010191905055915060408051908101604052808573ffffffffffffffffffffffffffffffffffffffff168152602001600115158152506001600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055509050508373ffffffffffffffffffffffffffffffffffffffff16827f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669960405160405180910390a38192505050919050565b600061100a7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916611d8c565b905090565b60008061101b83610c4e565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f57454400000000000000000000000000008152509015156110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110be5780820151818401526020810190506110a3565b50505050905090810190601f1680156110eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506111026108f7565b915061110d82611d97565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000008152509015156111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111b0578082015181840152602081019050611195565b50505050905090810190601f1680156111dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611284578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561127e573d6000803e3d6000fd5b5061143c565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561131f57600080fd5b505af1158015611333573d6000803e3d6000fd5b505050506040513d602081101561134957600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ff57600080fd5b505af1158015611413573d6000803e3d6000fd5b505050506040513d602081101561142957600080fd5b8101908080519060200190929190505050505b505050565b60008060606000611450610786565b151561145f576000935061163e565b611467611b27565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114a7576000935061163e565b602085510290508491508082528273ffffffffffffffffffffffffffffffffffffffff1663fdef9106883089866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156115b1578082015181840152602081019050611596565b50505050905090810190601f1680156115de5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d602081101561162a57600080fd5b810190808051906020019092919050505093505b5050509392505050565b600080611653611b27565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561171f57600080fd5b505af1158015611733573d6000803e3d6000fd5b505050506040513d602081101561174957600080fd5b810190808051906020019092919050505090508091505090565b7ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa360010281565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36001026117b983611bfc565b6117c4338383611441565b6040805190810160405280600f81526020017f4150505f415554485f4641494c454400000000000000000000000000000000008152509015156118a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561186757808201518184015260208101905061184c565b50505050905090810190601f1680156118945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836000811180156118b5575060005481105b6040805190810160405280601a81526020017f45564d5245475f494e4558495354454e545f4558454355544f52000000000000815250901515611993576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561195857808201518184015260208101905061193d565b50505050905090810190601f1680156119855780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600086815260200190815260200160002093508360000160149054906101000a900460ff16156040805190810160405280601781526020017f45564d5245475f4558454355544f525f454e41424c4544000000000000000000815250901515611a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a5f578082015181840152602081019050611a44565b50505050905090810190601f168015611a8c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060018460000160146101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16857f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669960405160405180910390a35050505050565b6000611b597f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916611de9565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b89610fd8565b14905090565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16905082565b6000611bed826000611df4565b9050919050565b600043905090565b60606001604051908082528060200260200182016040528015611c2e5781602001602082028038833980820191505090505b50905081816000815181101515611c4157fe5b9060200190602002018181525050919050565b600081549050919050565b6000611c69610fd8565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515611d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d0d578082015181840152602081019050611cf2565b50505050905090810190601f168015611d3a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611d8a611d54611bf4565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916611e4e90919063ffffffff16565b565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd85760009150611de3565b823b90506000811191505b50919050565b600081549050919050565b600080611e018484611e55565b90507c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160491505092915050565b8082555050565b6000816020018301519050929150505600a165627a7a72305820f6de821ba13da33a6a3f25e07d05b2861370d1c1dfb01b6c6c98278148612e3c0029",
  "sourceMap": "236:4037:33:-;;;344:9:19;:7;;;:9;;;:::i;:::-;236:4037:33;;590:84:28;651:1:26;623:24;:22;;;:24;;;:::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;637:30:28;277:2;637:13;;;:30;;;:::i;:::-;590:84::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;;;;;:49;;;:::i;:::-;963:56;;889:137;:::o;1759:141::-;651:1;623:24;:22;;;:24;;;:::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1832:61;1880:12;353:66;1832:29;;:47;;;;;;;;;:61;;;;;:::i;:::-;1759:141;:::o;519:134:31:-;587:12;636:8;630:15;622:23;;620:27;;;:::o;1028:119::-;1134:4;1124:8;1117:22;1115:26;;:::o;236:4037:33:-;;;;;;;",
  "deployedSourceMap": "236:4037:33:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3875:396;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3875:396:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1136:208:26;;;;;;;;;;;;;;;;;;;;;;;;;;;598:119:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:119:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;733:179:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;733:179:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2466:229:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2466:229:18;;;;;;;;;;;;;;;;;;;;;;;;;;;2636:515:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:515:33;;;;;;;;;;;;;;;;;;;;;;;;;;1333:99:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1333:99:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:106:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1754:158:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1754:158:33;;;;;;2166:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2166:321:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;889:137:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;889:137:26;;;;;;;;;;;;;;;;;;;;;;;687:446:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;687:446:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:826:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1524:826:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:231:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:231:34;;;;;;;;;;;;;;;;;;;;;;;;;;;798:114:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;798:114:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3299:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3299:409:33;;;;;;;;;;;;;;;;;;;;;;;;;;674:116:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:17;;;;;;;;;;;;;;;;;;;;;;;;;;;287:117:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:28;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:51:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1301:51:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3875:396;3938:18;3968:10;4150:27;3981:19;:7;:17;:19::i;:::-;3968:32;;;;4180:9;:13;4190:2;4180:13;;;;;;;;;;;4150:43;;4210:5;:13;;;;;;;;;;;;:54;;4262:1;4210:54;;;4226:5;:14;;;;;;;;;;;;4210:54;4203:61;;3875:396;;;;;:::o;1136:208:26:-;1183:4;1199:27;1229:24;:22;:24::i;:::-;1199:54;;1293:1;1270:19;:24;;:67;;;;;1318:19;1298:16;:14;:16::i;:::-;:39;;1270:67;1263:74;;1136:208;;:::o;598:119:33:-;651:66;598:119;;;:::o;733:179:34:-;799:18;855:22;:20;:22::i;:::-;:40;;;896:7;855:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;855:49:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;855:49:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;855:49:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;855:49:34;;;;;;;;;;;;;;;;829:76;;733:179;;;:::o;2466:229:18:-;2515:7;2621:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2621:27:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2621:27:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2621:27:18;;;;;;;;;;;;;;;;2614:34;;2466:229;:::o;2636:515:33:-;2913:35;846:66;2719:21;;2742:16;2746:11;2742:3;:16::i;:::-;1031:38:18;1042:10;1054:5;1061:7;1031:10;:38::i;:::-;1071:17;;;;;;;;;;;;;;;;;;1023:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1023:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2951:9:33;:22;2961:11;2951:22;;;;;;;;;;;2913:60;;2991:13;:21;;;;;;;;;;;;3014:23;;;;;;;;;;;;;;;;;;2983:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2983:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3072:5;3048:13;:21;;;:29;;;;;;;;;;;;;;;;;;3121:13;:22;;;;;;;;;;;;3092:52;;3108:11;3092:52;;;;;;;;;;2636:515;;;;:::o;1333:99:32:-;1398:4;1421;1414:11;;1333:99;;;:::o;796:106:17:-;834:7;860:35;601:66;860:15;;:33;;;;:35::i;:::-;853:42;;796:106;:::o;1754:158:33:-;651:1:26;623:24;:22;:24::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:13:33;:11;:13::i;:::-;1904:1;1883:18;:22;;;;1754:158::o;2166:321::-;2274:10;2296:18;651:66;2237:26;;873:47:18;884:10;896:5;917:1;903:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;903:16:18;;;;873:10;:47::i;:::-;922:17;;;;;;;;;;;;;;;;;;865:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;865:75:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2317:18:33;;:20;;;;;;;;;;;;2296:41;;2371:30;;;;;;;;;2385:9;2371:30;;;;;;2396:4;2371:30;;;;;2347:9;:21;2357:10;2347:21;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2443:9;2416:37;;2431:10;2416:37;;;;;;;;;;2470:10;2463:17;;2166:321;;;;;:::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;:49::i;:::-;963:56;;889:137;:::o;687:446:32:-;811:13;1019:14;755:27;775:6;755:19;:27::i;:::-;784:16;;;;;;;;;;;;;;;;;;747:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;747:54:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:18;:16;:18::i;:::-;811:34;;863:17;874:5;863:10;:17::i;:::-;882:24;;;;;;;;;;;;;;;;;;855:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;855:52:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:1:23;922:13:32;;:6;:13;;;918:209;;;951:5;:14;;:37;974:4;966:21;;;951:37;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;951:37:32;918:209;;;1042:6;1036:23;;;1060:4;1036:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:29:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1036:29:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1036:29:32;;;;;;;;;;;;;;;;1019:46;;1085:6;1079:22;;;1102:5;1109:6;1079:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1079:37:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1079:37:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1079:37:32;;;;;;;;;;;;;;;;;918:209;687:446;;;:::o;1524:826:18:-;1616:4;1702:20;2106:16;2132:18;1637:16;:14;:16::i;:::-;1636:17;1632:60;;;1676:5;1669:12;;;;1632:60;1725:8;:6;:8::i;:::-;1702:31;;1780:1;1747:35;;1755:12;1747:35;;;1743:78;;;1805:5;1798:12;;;;1743:78;2170:2;2153:7;:14;:19;2132:40;;2212:7;2205:14;;2244:10;2239:3;2232:23;2281:12;:26;;;2308:7;2325:4;2332:5;2339:3;2281:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2281:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:62:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2281:62:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2281:62:18;;;;;;;;;;;;;;;;2274:69;;1524:826;;;;;;;;;:::o;918:231:34:-;971:18;1001:20;1024:8;:6;:8::i;:::-;:15;;;1368:66:45;1040:25:34;;330:66:36;1067:25:34;;1024:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1024:69:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1024:69:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1024:69:34;;;;;;;;;;;;;;;;1001:92;;1129:12;1103:39;;918:231;;:::o;798:114:33:-;846:66;798:114;;;:::o;3299:409::-;3472:35;846:66;3381:21;;3404:16;3408:11;3404:3;:16::i;:::-;1031:38:18;1042:10;1054:5;1061:7;1031:10;:38::i;:::-;1071:17;;;;;;;;;;;;;;;;;;1023:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1023:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3445:11:33;1612:1;1598:11;:15;:51;;;;;1631:18;;1617:11;:32;1598:51;1651:25;;;;;;;;;;;;;;;;;;1590:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1590:87:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3510:9;:22;3520:11;3510:22;;;;;;;;;;;3472:60;;3551:13;:21;;;;;;;;;;;;3550:22;3574;;;;;;;;;;;;;;;;;;3542:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3542:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3631:4;3607:13;:21;;;:28;;;;;;;;;;;;;;;;;;3678:13;:22;;;;;;;;;;;;3650:51;;3665:11;3650:51;;;;;;;;;;1099:1:18;3299:409:33;;;;:::o;674:116:17:-;713:7;747:35;485:66;747:15;;:33;;;;:35::i;:::-;732:51;;674:116;:::o;287:117:28:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;1301:51:33:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;99:109:37:-;156:6;181:20;190:7;199:1;181:8;:20::i;:::-;174:27;;99:109;;;:::o;347:94:29:-;396:7;422:12;415:19;;347:94;:::o;1556:117:10:-;1604:11;1645:1;1631:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;1631:16:10;;;;1627:20;;1664:2;1657:1;1659;1657:4;;;;;;;;;;;;;;;;;:9;;;;;1556:117;;;:::o;379:134:31:-;447:12;496:8;490:15;482:23;;480:27;;;:::o;1455:123:26:-;651:1;623:24;:22;:24::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506;1554:16;:14;:16::i;:::-;353:66;1506:29;;:47;;;;;:65;;;;:::i;:::-;1455:123::o;519:134:31:-;587:12;636:8;630:15;622:23;;620:27;;;:::o;426:244:27:-;486:4;576:12;525:1;506:21;;:7;:21;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;239:134:31:-;307:12;356:8;350:15;342:23;;340:27;;;:::o;739:355:37:-;812:13;837:12;852:27;862:5;869:9;852;:27::i;:::-;837:42;;1018:59;937:66;931:4;927:77;923:155;913:165;;899:189;;;;;:::o;1028:119:31:-;1134:4;1124:8;1117:22;1115:26;;:::o;214:188:37:-;288:14;374:9;368:4;364:20;357:5;353:32;347:39;337:49;;323:73;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"../apps/AragonApp.sol\";\nimport \"./ScriptHelpers.sol\";\nimport \"./IEVMScriptExecutor.sol\";\nimport \"./IEVMScriptRegistry.sol\";\n\n\n/* solium-disable function-order */\n// Allow public initialize() to be first\ncontract EVMScriptRegistry is IEVMScriptRegistry, EVMScriptRegistryConstants, AragonApp {\n    using ScriptHelpers for bytes;\n\n    /* Hardcoded constants to save gas\n    bytes32 public constant REGISTRY_ADD_EXECUTOR_ROLE = keccak256(\"REGISTRY_ADD_EXECUTOR_ROLE\");\n    bytes32 public constant REGISTRY_MANAGER_ROLE = keccak256(\"REGISTRY_MANAGER_ROLE\");\n    */\n    bytes32 public constant REGISTRY_ADD_EXECUTOR_ROLE = 0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2;\n    // WARN: Manager can censor all votes and the like happening in an org\n    bytes32 public constant REGISTRY_MANAGER_ROLE = 0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3;\n\n    string private constant ERROR_INEXISTENT_EXECUTOR = \"EVMREG_INEXISTENT_EXECUTOR\";\n    string private constant ERROR_EXECUTOR_ENABLED = \"EVMREG_EXECUTOR_ENABLED\";\n    string private constant ERROR_EXECUTOR_DISABLED = \"EVMREG_EXECUTOR_DISABLED\";\n\n    struct ExecutorEntry {\n        IEVMScriptExecutor executor;\n        bool enabled;\n    }\n\n    uint256 private executorsNextIndex;\n    mapping (uint256 => ExecutorEntry) public executors;\n\n    event EnableExecutor(uint256 indexed executorId, address indexed executorAddress);\n    event DisableExecutor(uint256 indexed executorId, address indexed executorAddress);\n\n    modifier executorExists(uint256 _executorId) {\n        require(_executorId > 0 && _executorId < executorsNextIndex, ERROR_INEXISTENT_EXECUTOR);\n        _;\n    }\n\n    /**\n    * @notice Initialize the registry\n    */\n    function initialize() public onlyInit {\n        initialized();\n        // Create empty record to begin executor IDs at 1\n        executorsNextIndex = 1;\n    }\n\n    /**\n    * @notice Add a new script executor with address `_executor` to the registry\n    * @param _executor Address of the IEVMScriptExecutor that will be added to the registry\n    * @return id Identifier of the executor in the registry\n    */\n    function addScriptExecutor(IEVMScriptExecutor _executor) external auth(REGISTRY_ADD_EXECUTOR_ROLE) returns (uint256 id) {\n        uint256 executorId = executorsNextIndex++;\n        executors[executorId] = ExecutorEntry(_executor, true);\n        emit EnableExecutor(executorId, _executor);\n        return executorId;\n    }\n\n    /**\n    * @notice Disable script executor with ID `_executorId`\n    * @param _executorId Identifier of the executor in the registry\n    */\n    function disableScriptExecutor(uint256 _executorId)\n        external\n        authP(REGISTRY_MANAGER_ROLE, arr(_executorId))\n    {\n        // Note that we don't need to check for an executor's existence in this case, as only\n        // existing executors can be enabled\n        ExecutorEntry storage executorEntry = executors[_executorId];\n        require(executorEntry.enabled, ERROR_EXECUTOR_DISABLED);\n        executorEntry.enabled = false;\n        emit DisableExecutor(_executorId, executorEntry.executor);\n    }\n\n    /**\n    * @notice Enable script executor with ID `_executorId`\n    * @param _executorId Identifier of the executor in the registry\n    */\n    function enableScriptExecutor(uint256 _executorId)\n        external\n        authP(REGISTRY_MANAGER_ROLE, arr(_executorId))\n        executorExists(_executorId)\n    {\n        ExecutorEntry storage executorEntry = executors[_executorId];\n        require(!executorEntry.enabled, ERROR_EXECUTOR_ENABLED);\n        executorEntry.enabled = true;\n        emit EnableExecutor(_executorId, executorEntry.executor);\n    }\n\n    /**\n    * @dev Get the script executor that can execute a particular script based on its first 4 bytes\n    * @param _script EVMScript being inspected\n    */\n    function getScriptExecutor(bytes _script) public view returns (IEVMScriptExecutor) {\n        uint256 id = _script.getSpecId();\n\n        // Note that we don't need to check for an executor's existence in this case, as only\n        // existing executors can be enabled\n        ExecutorEntry storage entry = executors[id];\n        return entry.enabled ? entry.executor : IEVMScriptExecutor(0);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
    "exportedSymbols": {
      "EVMScriptRegistry": [
        9287
      ]
    },
    "id": 9288,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9068,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:33"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 9069,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 8476,
        "src": "25:31:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
        "file": "./ScriptHelpers.sol",
        "id": 9070,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 9616,
        "src": "57:29:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 9071,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 9497,
        "src": "87:34:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 9072,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 9524,
        "src": "122:34:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9073,
              "name": "IEVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9523,
              "src": "266:18:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                "typeString": "contract IEVMScriptRegistry"
              }
            },
            "id": 9074,
            "nodeType": "InheritanceSpecifier",
            "src": "266:18:33"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9075,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9503,
              "src": "286:26:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$9503",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 9076,
            "nodeType": "InheritanceSpecifier",
            "src": "286:26:33"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9077,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8475,
              "src": "314:9:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$8475",
                "typeString": "contract AragonApp"
              }
            },
            "id": 9078,
            "nodeType": "InheritanceSpecifier",
            "src": "314:9:33"
          }
        ],
        "contractDependencies": [
          7585,
          8347,
          8475,
          8488,
          8621,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9476,
          9503,
          9523,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 9287,
        "linearizedBaseContracts": [
          9287,
          8475,
          7585,
          9476,
          10769,
          9503,
          9066,
          8789,
          8621,
          8663,
          8488,
          8822,
          8761,
          8869,
          8347,
          9523
        ],
        "name": "EVMScriptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9081,
            "libraryName": {
              "contractScope": null,
              "id": 9079,
              "name": "ScriptHelpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9615,
              "src": "336:13:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScriptHelpers_$9615",
                "typeString": "library ScriptHelpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "330:30:33",
            "typeName": {
              "id": 9080,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "354:5:33",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 9084,
            "name": "REGISTRY_ADD_EXECUTOR_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "598:119:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 9082,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "598:7:33",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307863346539306633386565613863343231326130303963613762383934373934336261346434613538643139623638333431376636353239316431636439656432",
              "id": 9083,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "651:66:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_89065098749499542665412112470485833788131522672750921966929243139564941188818_by_1",
                "typeString": "int_const 8906...(69 digits omitted)...8818"
              },
              "value": "0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 9087,
            "name": "REGISTRY_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "798:114:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 9085,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "798:7:33",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307866376134353065663333356531383932636234326338636137326537323432333539643737313139323462373564623537313734313064613366363134616133",
              "id": 9086,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "846:66:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112011595107235085372515956694391736358546673401817295630538651321883735181987_by_1",
                "typeString": "int_const 1120...(70 digits omitted)...1987"
              },
              "value": "0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 9090,
            "name": "ERROR_INEXISTENT_EXECUTOR",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "919:80:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9088,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "919:6:33",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f494e4558495354454e545f4558454355544f52",
              "id": 9089,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "971:28:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_567277bf20a481099b140fabf868d5f9372cc8a7f04146c67033656cb8ff60ba",
                "typeString": "literal_string \"EVMREG_INEXISTENT_EXECUTOR\""
              },
              "value": "EVMREG_INEXISTENT_EXECUTOR"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9093,
            "name": "ERROR_EXECUTOR_ENABLED",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1005:74:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9091,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1005:6:33",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f454e41424c4544",
              "id": 9092,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1054:25:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a50bafa9c8686e97a8dde70e0e0e3137cd6c8f2862e66faf05097c5b71450a54",
                "typeString": "literal_string \"EVMREG_EXECUTOR_ENABLED\""
              },
              "value": "EVMREG_EXECUTOR_ENABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9096,
            "name": "ERROR_EXECUTOR_DISABLED",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1085:76:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9094,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1085:6:33",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f44495341424c4544",
              "id": 9095,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1135:26:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f208a82b5e06512178289ed18d363585befdf89110b08b7a23b646ead2c75be7",
                "typeString": "literal_string \"EVMREG_EXECUTOR_DISABLED\""
              },
              "value": "EVMREG_EXECUTOR_DISABLED"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "EVMScriptRegistry.ExecutorEntry",
            "id": 9101,
            "members": [
              {
                "constant": false,
                "id": 9098,
                "name": "executor",
                "nodeType": "VariableDeclaration",
                "scope": 9101,
                "src": "1199:27:33",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                  "typeString": "contract IEVMScriptExecutor"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 9097,
                  "name": "IEVMScriptExecutor",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 9496,
                  "src": "1199:18:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9100,
                "name": "enabled",
                "nodeType": "VariableDeclaration",
                "scope": 9101,
                "src": "1236:12:33",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 9099,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1236:4:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ExecutorEntry",
            "nodeType": "StructDefinition",
            "scope": 9287,
            "src": "1168:87:33",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9103,
            "name": "executorsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1261:34:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9102,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1261:7:33",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9107,
            "name": "executors",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1301:51:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
              "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
            },
            "typeName": {
              "id": 9106,
              "keyType": {
                "id": 9104,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1310:7:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1301:34:33",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
              },
              "valueType": {
                "contractScope": null,
                "id": 9105,
                "name": "ExecutorEntry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 9101,
                "src": "1321:13:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                  "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9113,
            "name": "EnableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9109,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9113,
                  "src": "1380:26:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9108,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1380:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9111,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9113,
                  "src": "1408:31:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1408:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1379:61:33"
            },
            "src": "1359:82:33"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9119,
            "name": "DisableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9115,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9119,
                  "src": "1468:26:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1468:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9117,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9119,
                  "src": "1496:31:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9116,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1496:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1467:61:33"
            },
            "src": "1446:83:33"
          },
          {
            "body": {
              "id": 9135,
              "nodeType": "Block",
              "src": "1580:115:33",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9124,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "1598:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1612:1:33",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1598:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9127,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "1617:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9128,
                            "name": "executorsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9103,
                            "src": "1631:18:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1617:32:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1598:51:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9131,
                        "name": "ERROR_INEXISTENT_EXECUTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9090,
                        "src": "1651:25:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9123,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "1590:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1590:87:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9133,
                  "nodeType": "ExpressionStatement",
                  "src": "1590:87:33"
                },
                {
                  "id": 9134,
                  "nodeType": "PlaceholderStatement",
                  "src": "1687:1:33"
                }
              ]
            },
            "documentation": null,
            "id": 9136,
            "name": "executorExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9121,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9136,
                  "src": "1559:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9120,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1558:21:33"
            },
            "src": "1535:160:33",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9148,
              "nodeType": "Block",
              "src": "1792:120:33",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9141,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "1802:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1802:13:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9143,
                  "nodeType": "ExpressionStatement",
                  "src": "1802:13:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9144,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9103,
                      "src": "1883:18:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 9145,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1904:1:33",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1883:22:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9147,
                  "nodeType": "ExpressionStatement",
                  "src": "1883:22:33"
                }
              ]
            },
            "documentation": "@notice Initialize the registry",
            "id": 9149,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 9139,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9138,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "1783:8:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1783:8:33"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9137,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1773:2:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9140,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1792:0:33"
            },
            "scope": 9287,
            "src": "1754:158:33",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9180,
              "nodeType": "Block",
              "src": "2286:201:33",
              "statements": [
                {
                  "assignments": [
                    9160
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9160,
                      "name": "executorId",
                      "nodeType": "VariableDeclaration",
                      "scope": 9181,
                      "src": "2296:18:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9159,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2296:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9163,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 9162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2317:20:33",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 9161,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9103,
                      "src": "2317:18:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2296:41:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 9164,
                        "name": "executors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9107,
                        "src": "2347:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                          "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                        }
                      },
                      "id": 9166,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9165,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9160,
                        "src": "2357:10:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2347:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9168,
                          "name": "_executor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9151,
                          "src": "2385:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                            "typeString": "contract IEVMScriptExecutor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 9169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2396:4:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                            "typeString": "contract IEVMScriptExecutor"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 9167,
                        "name": "ExecutorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9101,
                        "src": "2371:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ExecutorEntry_$9101_storage_ptr_$",
                          "typeString": "type(struct EVMScriptRegistry.ExecutorEntry storage pointer)"
                        }
                      },
                      "id": 9170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2371:30:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_memory",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry memory"
                      }
                    },
                    "src": "2347:54:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "id": 9172,
                  "nodeType": "ExpressionStatement",
                  "src": "2347:54:33"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9174,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9160,
                        "src": "2431:10:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9175,
                        "name": "_executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9151,
                        "src": "2443:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9173,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9113,
                      "src": "2416:14:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 9176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2416:37:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9177,
                  "nodeType": "EmitStatement",
                  "src": "2411:42:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9178,
                    "name": "executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9160,
                    "src": "2470:10:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9158,
                  "id": 9179,
                  "nodeType": "Return",
                  "src": "2463:17:33"
                }
              ]
            },
            "documentation": "@notice Add a new script executor with address `_executor` to the registry\n@param _executor Address of the IEVMScriptExecutor that will be added to the registry\n@return id Identifier of the executor in the registry",
            "id": 9181,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9154,
                    "name": "REGISTRY_ADD_EXECUTOR_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9084,
                    "src": "2237:26:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9155,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9153,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "2232:4:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2232:32:33"
              }
            ],
            "name": "addScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9151,
                  "name": "_executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 9181,
                  "src": "2193:28:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9150,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9496,
                    "src": "2193:18:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2192:30:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9157,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 9181,
                  "src": "2274:10:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9156,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2274:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2273:12:33"
            },
            "scope": 9287,
            "src": "2166:321:33",
            "stateMutability": "nonpayable",
            "superFunction": 9510,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9216,
              "nodeType": "Block",
              "src": "2764:387:33",
              "statements": [
                {
                  "assignments": [
                    9193
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9193,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 9217,
                      "src": "2913:35:33",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9192,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9101,
                        "src": "2913:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9197,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9194,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9107,
                      "src": "2951:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 9196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9195,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9183,
                      "src": "2961:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2951:22:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2913:60:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9199,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9193,
                          "src": "2991:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 9200,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "enabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9100,
                        "src": "2991:21:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9201,
                        "name": "ERROR_EXECUTOR_DISABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9096,
                        "src": "3014:23:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9198,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2983:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2983:55:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9203,
                  "nodeType": "ExpressionStatement",
                  "src": "2983:55:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9204,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9193,
                        "src": "3048:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9206,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9100,
                      "src": "3048:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 9207,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3072:5:33",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3048:29:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9209,
                  "nodeType": "ExpressionStatement",
                  "src": "3048:29:33"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9211,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9183,
                        "src": "3108:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9212,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9193,
                          "src": "3121:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 9213,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9098,
                        "src": "3121:22:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9210,
                      "name": "DisableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9119,
                      "src": "3092:15:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 9214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3092:52:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9215,
                  "nodeType": "EmitStatement",
                  "src": "3087:57:33"
                }
              ]
            },
            "documentation": "@notice Disable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 9217,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9186,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9087,
                    "src": "2719:21:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9188,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9183,
                        "src": "2746:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9187,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7412,
                      "src": "2742:3:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 9189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2742:16:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 9190,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9185,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "2713:5:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2713:46:33"
              }
            ],
            "name": "disableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9184,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9183,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9217,
                  "src": "2667:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2667:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2666:21:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9191,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2764:0:33"
            },
            "scope": 9287,
            "src": "2636:515:33",
            "stateMutability": "nonpayable",
            "superFunction": 9515,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9256,
              "nodeType": "Block",
              "src": "3462:246:33",
              "statements": [
                {
                  "assignments": [
                    9232
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9232,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 9257,
                      "src": "3472:35:33",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9231,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9101,
                        "src": "3472:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9236,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9233,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9107,
                      "src": "3510:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 9235,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9234,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9219,
                      "src": "3520:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3510:22:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3472:60:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3550:22:33",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9238,
                            "name": "executorEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9232,
                            "src": "3551:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                              "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                            }
                          },
                          "id": 9239,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "enabled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9100,
                          "src": "3551:21:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9241,
                        "name": "ERROR_EXECUTOR_ENABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9093,
                        "src": "3574:22:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9237,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3542:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3542:55:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9243,
                  "nodeType": "ExpressionStatement",
                  "src": "3542:55:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9244,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9232,
                        "src": "3607:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9246,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9100,
                      "src": "3607:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 9247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3631:4:33",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3607:28:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9249,
                  "nodeType": "ExpressionStatement",
                  "src": "3607:28:33"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9251,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9219,
                        "src": "3665:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9252,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9232,
                          "src": "3678:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 9253,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9098,
                        "src": "3678:22:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9250,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9113,
                      "src": "3650:14:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 9254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3650:51:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9255,
                  "nodeType": "EmitStatement",
                  "src": "3645:56:33"
                }
              ]
            },
            "documentation": "@notice Enable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 9257,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9222,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9087,
                    "src": "3381:21:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9224,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9219,
                        "src": "3408:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9223,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7412,
                      "src": "3404:3:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 9225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3404:16:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 9226,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9221,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "3375:5:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3375:46:33"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9228,
                    "name": "_executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9219,
                    "src": "3445:11:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 9229,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9227,
                  "name": "executorExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9136,
                  "src": "3430:14:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3430:27:33"
              }
            ],
            "name": "enableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9220,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9219,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9257,
                  "src": "3329:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9218,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3329:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3328:21:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9230,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3462:0:33"
            },
            "scope": 9287,
            "src": "3299:409:33",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9285,
              "nodeType": "Block",
              "src": "3958:313:33",
              "statements": [
                {
                  "assignments": [
                    9265
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9265,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 9286,
                      "src": "3968:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9264,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3968:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9269,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9266,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9259,
                        "src": "3981:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 9267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSpecId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9538,
                      "src": "3981:17:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (uint32)"
                      }
                    },
                    "id": 9268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3981:19:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3968:32:33"
                },
                {
                  "assignments": [
                    9271
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9271,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 9286,
                      "src": "4150:27:33",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9270,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9101,
                        "src": "4150:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9275,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9272,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9107,
                      "src": "4180:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 9274,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9273,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9265,
                      "src": "4190:2:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4180:13:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4150:43:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9276,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9271,
                        "src": "4210:5:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9277,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9100,
                      "src": "4210:13:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4262:1:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 9280,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9496,
                        "src": "4243:18:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$9496_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 9282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4243:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "id": 9283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4210:54:33",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9278,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9271,
                        "src": "4226:5:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9279,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9098,
                      "src": "4226:14:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 9263,
                  "id": 9284,
                  "nodeType": "Return",
                  "src": "4203:61:33"
                }
              ]
            },
            "documentation": "@dev Get the script executor that can execute a particular script based on its first 4 bytes\n@param _script EVMScript being inspected",
            "id": 9286,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9259,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9286,
                  "src": "3902:13:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9258,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3902:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3901:15:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9262,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9286,
                  "src": "3938:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9261,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9496,
                    "src": "3938:18:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3937:20:33"
            },
            "scope": 9287,
            "src": "3875:396:33",
            "stateMutability": "view",
            "superFunction": 9522,
            "visibility": "public"
          }
        ],
        "scope": 9288,
        "src": "236:4037:33"
      }
    ],
    "src": "0:4274:33"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
    "exportedSymbols": {
      "EVMScriptRegistry": [
        9287
      ]
    },
    "id": 9288,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9068,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:33"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 9069,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 8476,
        "src": "25:31:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
        "file": "./ScriptHelpers.sol",
        "id": 9070,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 9616,
        "src": "57:29:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 9071,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 9497,
        "src": "87:34:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 9072,
        "nodeType": "ImportDirective",
        "scope": 9288,
        "sourceUnit": 9524,
        "src": "122:34:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9073,
              "name": "IEVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9523,
              "src": "266:18:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                "typeString": "contract IEVMScriptRegistry"
              }
            },
            "id": 9074,
            "nodeType": "InheritanceSpecifier",
            "src": "266:18:33"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9075,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9503,
              "src": "286:26:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$9503",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 9076,
            "nodeType": "InheritanceSpecifier",
            "src": "286:26:33"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9077,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8475,
              "src": "314:9:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$8475",
                "typeString": "contract AragonApp"
              }
            },
            "id": 9078,
            "nodeType": "InheritanceSpecifier",
            "src": "314:9:33"
          }
        ],
        "contractDependencies": [
          7585,
          8347,
          8475,
          8488,
          8621,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9476,
          9503,
          9523,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 9287,
        "linearizedBaseContracts": [
          9287,
          8475,
          7585,
          9476,
          10769,
          9503,
          9066,
          8789,
          8621,
          8663,
          8488,
          8822,
          8761,
          8869,
          8347,
          9523
        ],
        "name": "EVMScriptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9081,
            "libraryName": {
              "contractScope": null,
              "id": 9079,
              "name": "ScriptHelpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9615,
              "src": "336:13:33",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScriptHelpers_$9615",
                "typeString": "library ScriptHelpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "330:30:33",
            "typeName": {
              "id": 9080,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "354:5:33",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 9084,
            "name": "REGISTRY_ADD_EXECUTOR_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "598:119:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 9082,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "598:7:33",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307863346539306633386565613863343231326130303963613762383934373934336261346434613538643139623638333431376636353239316431636439656432",
              "id": 9083,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "651:66:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_89065098749499542665412112470485833788131522672750921966929243139564941188818_by_1",
                "typeString": "int_const 8906...(69 digits omitted)...8818"
              },
              "value": "0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 9087,
            "name": "REGISTRY_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "798:114:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 9085,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "798:7:33",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307866376134353065663333356531383932636234326338636137326537323432333539643737313139323462373564623537313734313064613366363134616133",
              "id": 9086,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "846:66:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112011595107235085372515956694391736358546673401817295630538651321883735181987_by_1",
                "typeString": "int_const 1120...(70 digits omitted)...1987"
              },
              "value": "0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 9090,
            "name": "ERROR_INEXISTENT_EXECUTOR",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "919:80:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9088,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "919:6:33",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f494e4558495354454e545f4558454355544f52",
              "id": 9089,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "971:28:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_567277bf20a481099b140fabf868d5f9372cc8a7f04146c67033656cb8ff60ba",
                "typeString": "literal_string \"EVMREG_INEXISTENT_EXECUTOR\""
              },
              "value": "EVMREG_INEXISTENT_EXECUTOR"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9093,
            "name": "ERROR_EXECUTOR_ENABLED",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1005:74:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9091,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1005:6:33",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f454e41424c4544",
              "id": 9092,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1054:25:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a50bafa9c8686e97a8dde70e0e0e3137cd6c8f2862e66faf05097c5b71450a54",
                "typeString": "literal_string \"EVMREG_EXECUTOR_ENABLED\""
              },
              "value": "EVMREG_EXECUTOR_ENABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9096,
            "name": "ERROR_EXECUTOR_DISABLED",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1085:76:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9094,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1085:6:33",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f44495341424c4544",
              "id": 9095,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1135:26:33",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f208a82b5e06512178289ed18d363585befdf89110b08b7a23b646ead2c75be7",
                "typeString": "literal_string \"EVMREG_EXECUTOR_DISABLED\""
              },
              "value": "EVMREG_EXECUTOR_DISABLED"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "EVMScriptRegistry.ExecutorEntry",
            "id": 9101,
            "members": [
              {
                "constant": false,
                "id": 9098,
                "name": "executor",
                "nodeType": "VariableDeclaration",
                "scope": 9101,
                "src": "1199:27:33",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                  "typeString": "contract IEVMScriptExecutor"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 9097,
                  "name": "IEVMScriptExecutor",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 9496,
                  "src": "1199:18:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9100,
                "name": "enabled",
                "nodeType": "VariableDeclaration",
                "scope": 9101,
                "src": "1236:12:33",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 9099,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1236:4:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ExecutorEntry",
            "nodeType": "StructDefinition",
            "scope": 9287,
            "src": "1168:87:33",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9103,
            "name": "executorsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1261:34:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9102,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1261:7:33",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9107,
            "name": "executors",
            "nodeType": "VariableDeclaration",
            "scope": 9287,
            "src": "1301:51:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
              "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
            },
            "typeName": {
              "id": 9106,
              "keyType": {
                "id": 9104,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1310:7:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1301:34:33",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
              },
              "valueType": {
                "contractScope": null,
                "id": 9105,
                "name": "ExecutorEntry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 9101,
                "src": "1321:13:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                  "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9113,
            "name": "EnableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9109,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9113,
                  "src": "1380:26:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9108,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1380:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9111,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9113,
                  "src": "1408:31:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1408:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1379:61:33"
            },
            "src": "1359:82:33"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9119,
            "name": "DisableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9115,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9119,
                  "src": "1468:26:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1468:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9117,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9119,
                  "src": "1496:31:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9116,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1496:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1467:61:33"
            },
            "src": "1446:83:33"
          },
          {
            "body": {
              "id": 9135,
              "nodeType": "Block",
              "src": "1580:115:33",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9124,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "1598:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1612:1:33",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1598:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9127,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "1617:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9128,
                            "name": "executorsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9103,
                            "src": "1631:18:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1617:32:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1598:51:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9131,
                        "name": "ERROR_INEXISTENT_EXECUTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9090,
                        "src": "1651:25:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9123,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "1590:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1590:87:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9133,
                  "nodeType": "ExpressionStatement",
                  "src": "1590:87:33"
                },
                {
                  "id": 9134,
                  "nodeType": "PlaceholderStatement",
                  "src": "1687:1:33"
                }
              ]
            },
            "documentation": null,
            "id": 9136,
            "name": "executorExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9121,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9136,
                  "src": "1559:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9120,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1558:21:33"
            },
            "src": "1535:160:33",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9148,
              "nodeType": "Block",
              "src": "1792:120:33",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9141,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "1802:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1802:13:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9143,
                  "nodeType": "ExpressionStatement",
                  "src": "1802:13:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9144,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9103,
                      "src": "1883:18:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 9145,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1904:1:33",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1883:22:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9147,
                  "nodeType": "ExpressionStatement",
                  "src": "1883:22:33"
                }
              ]
            },
            "documentation": "@notice Initialize the registry",
            "id": 9149,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 9139,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9138,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "1783:8:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1783:8:33"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9137,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1773:2:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9140,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1792:0:33"
            },
            "scope": 9287,
            "src": "1754:158:33",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9180,
              "nodeType": "Block",
              "src": "2286:201:33",
              "statements": [
                {
                  "assignments": [
                    9160
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9160,
                      "name": "executorId",
                      "nodeType": "VariableDeclaration",
                      "scope": 9181,
                      "src": "2296:18:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9159,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2296:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9163,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 9162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2317:20:33",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 9161,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9103,
                      "src": "2317:18:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2296:41:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 9164,
                        "name": "executors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9107,
                        "src": "2347:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                          "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                        }
                      },
                      "id": 9166,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9165,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9160,
                        "src": "2357:10:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2347:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9168,
                          "name": "_executor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9151,
                          "src": "2385:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                            "typeString": "contract IEVMScriptExecutor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 9169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2396:4:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                            "typeString": "contract IEVMScriptExecutor"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 9167,
                        "name": "ExecutorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9101,
                        "src": "2371:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ExecutorEntry_$9101_storage_ptr_$",
                          "typeString": "type(struct EVMScriptRegistry.ExecutorEntry storage pointer)"
                        }
                      },
                      "id": 9170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2371:30:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_memory",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry memory"
                      }
                    },
                    "src": "2347:54:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "id": 9172,
                  "nodeType": "ExpressionStatement",
                  "src": "2347:54:33"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9174,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9160,
                        "src": "2431:10:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9175,
                        "name": "_executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9151,
                        "src": "2443:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9173,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9113,
                      "src": "2416:14:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 9176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2416:37:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9177,
                  "nodeType": "EmitStatement",
                  "src": "2411:42:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9178,
                    "name": "executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9160,
                    "src": "2470:10:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9158,
                  "id": 9179,
                  "nodeType": "Return",
                  "src": "2463:17:33"
                }
              ]
            },
            "documentation": "@notice Add a new script executor with address `_executor` to the registry\n@param _executor Address of the IEVMScriptExecutor that will be added to the registry\n@return id Identifier of the executor in the registry",
            "id": 9181,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9154,
                    "name": "REGISTRY_ADD_EXECUTOR_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9084,
                    "src": "2237:26:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9155,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9153,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "2232:4:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2232:32:33"
              }
            ],
            "name": "addScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9151,
                  "name": "_executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 9181,
                  "src": "2193:28:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9150,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9496,
                    "src": "2193:18:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2192:30:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9157,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 9181,
                  "src": "2274:10:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9156,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2274:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2273:12:33"
            },
            "scope": 9287,
            "src": "2166:321:33",
            "stateMutability": "nonpayable",
            "superFunction": 9510,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9216,
              "nodeType": "Block",
              "src": "2764:387:33",
              "statements": [
                {
                  "assignments": [
                    9193
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9193,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 9217,
                      "src": "2913:35:33",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9192,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9101,
                        "src": "2913:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9197,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9194,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9107,
                      "src": "2951:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 9196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9195,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9183,
                      "src": "2961:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2951:22:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2913:60:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9199,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9193,
                          "src": "2991:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 9200,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "enabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9100,
                        "src": "2991:21:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9201,
                        "name": "ERROR_EXECUTOR_DISABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9096,
                        "src": "3014:23:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9198,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2983:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2983:55:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9203,
                  "nodeType": "ExpressionStatement",
                  "src": "2983:55:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9204,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9193,
                        "src": "3048:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9206,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9100,
                      "src": "3048:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 9207,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3072:5:33",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3048:29:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9209,
                  "nodeType": "ExpressionStatement",
                  "src": "3048:29:33"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9211,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9183,
                        "src": "3108:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9212,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9193,
                          "src": "3121:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 9213,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9098,
                        "src": "3121:22:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9210,
                      "name": "DisableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9119,
                      "src": "3092:15:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 9214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3092:52:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9215,
                  "nodeType": "EmitStatement",
                  "src": "3087:57:33"
                }
              ]
            },
            "documentation": "@notice Disable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 9217,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9186,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9087,
                    "src": "2719:21:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9188,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9183,
                        "src": "2746:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9187,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7412,
                      "src": "2742:3:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 9189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2742:16:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 9190,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9185,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "2713:5:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2713:46:33"
              }
            ],
            "name": "disableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9184,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9183,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9217,
                  "src": "2667:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2667:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2666:21:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9191,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2764:0:33"
            },
            "scope": 9287,
            "src": "2636:515:33",
            "stateMutability": "nonpayable",
            "superFunction": 9515,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9256,
              "nodeType": "Block",
              "src": "3462:246:33",
              "statements": [
                {
                  "assignments": [
                    9232
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9232,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 9257,
                      "src": "3472:35:33",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9231,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9101,
                        "src": "3472:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9236,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9233,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9107,
                      "src": "3510:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 9235,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9234,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9219,
                      "src": "3520:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3510:22:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3472:60:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3550:22:33",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9238,
                            "name": "executorEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9232,
                            "src": "3551:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                              "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                            }
                          },
                          "id": 9239,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "enabled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9100,
                          "src": "3551:21:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9241,
                        "name": "ERROR_EXECUTOR_ENABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9093,
                        "src": "3574:22:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9237,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3542:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3542:55:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9243,
                  "nodeType": "ExpressionStatement",
                  "src": "3542:55:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9244,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9232,
                        "src": "3607:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9246,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9100,
                      "src": "3607:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 9247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3631:4:33",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3607:28:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9249,
                  "nodeType": "ExpressionStatement",
                  "src": "3607:28:33"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9251,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9219,
                        "src": "3665:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9252,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9232,
                          "src": "3678:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 9253,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9098,
                        "src": "3678:22:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9250,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9113,
                      "src": "3650:14:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 9254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3650:51:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9255,
                  "nodeType": "EmitStatement",
                  "src": "3645:56:33"
                }
              ]
            },
            "documentation": "@notice Enable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 9257,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9222,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9087,
                    "src": "3381:21:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9224,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9219,
                        "src": "3408:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9223,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7412,
                      "src": "3404:3:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 9225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3404:16:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 9226,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9221,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "3375:5:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3375:46:33"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9228,
                    "name": "_executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9219,
                    "src": "3445:11:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 9229,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9227,
                  "name": "executorExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9136,
                  "src": "3430:14:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3430:27:33"
              }
            ],
            "name": "enableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9220,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9219,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9257,
                  "src": "3329:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9218,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3329:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3328:21:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9230,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3462:0:33"
            },
            "scope": 9287,
            "src": "3299:409:33",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9285,
              "nodeType": "Block",
              "src": "3958:313:33",
              "statements": [
                {
                  "assignments": [
                    9265
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9265,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 9286,
                      "src": "3968:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9264,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3968:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9269,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9266,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9259,
                        "src": "3981:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 9267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSpecId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9538,
                      "src": "3981:17:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (uint32)"
                      }
                    },
                    "id": 9268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3981:19:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3968:32:33"
                },
                {
                  "assignments": [
                    9271
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9271,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 9286,
                      "src": "4150:27:33",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9270,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9101,
                        "src": "4150:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9275,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9272,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9107,
                      "src": "4180:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$9101_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 9274,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9273,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9265,
                      "src": "4190:2:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4180:13:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4150:43:33"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9276,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9271,
                        "src": "4210:5:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9277,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9100,
                      "src": "4210:13:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4262:1:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 9280,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9496,
                        "src": "4243:18:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$9496_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 9282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4243:21:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "id": 9283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4210:54:33",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9278,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9271,
                        "src": "4226:5:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$9101_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 9279,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9098,
                      "src": "4226:14:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 9263,
                  "id": 9284,
                  "nodeType": "Return",
                  "src": "4203:61:33"
                }
              ]
            },
            "documentation": "@dev Get the script executor that can execute a particular script based on its first 4 bytes\n@param _script EVMScript being inspected",
            "id": 9286,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9259,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9286,
                  "src": "3902:13:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9258,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3902:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3901:15:33"
            },
            "payable": false,
            "returnParameters": {
              "id": 9263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9262,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9286,
                  "src": "3938:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9261,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9496,
                    "src": "3938:18:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3937:20:33"
            },
            "scope": 9287,
            "src": "3875:396:33",
            "stateMutability": "view",
            "superFunction": 9522,
            "visibility": "public"
          }
        ],
        "scope": 9288,
        "src": "236:4037:33"
      }
    ],
    "src": "0:4274:33"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.509Z",
  "devdoc": {
    "methods": {
      "addScriptExecutor(address)": {
        "params": {
          "_executor": "Address of the IEVMScriptExecutor that will be added to the registry"
        },
        "return": "id Identifier of the executor in the registry"
      },
      "allowRecoverability(address)": {
        "details": "By default deriving from AragonApp makes it recoverable",
        "params": {
          "token": "Token address that would be recovered"
        },
        "return": "bool whether the app allows the recovery"
      },
      "canPerform(address,bytes32,uint256[])": {
        "details": "Check whether an action can be performed by a sender for a particular role on this app",
        "params": {
          "_params": "Permission params for the role",
          "_role": "Role on this app",
          "_sender": "Sender of the call"
        },
        "return": "Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet."
      },
      "disableScriptExecutor(uint256)": {
        "params": {
          "_executorId": "Identifier of the executor in the registry"
        }
      },
      "enableScriptExecutor(uint256)": {
        "params": {
          "_executorId": "Identifier of the executor in the registry"
        }
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the recovery vault for the app",
        "return": "Recovery vault address for the app"
      },
      "getScriptExecutor(bytes)": {
        "details": "Get the script executor that can execute a particular script based on its first 4 bytes",
        "params": {
          "_script": "EVMScript being inspected"
        }
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "addScriptExecutor(address)": {
        "notice": "Add a new script executor with address `_executor` to the registry"
      },
      "disableScriptExecutor(uint256)": {
        "notice": "Disable script executor with ID `_executorId`"
      },
      "enableScriptExecutor(uint256)": {
        "notice": "Enable script executor with ID `_executorId`"
      },
      "initialize()": {
        "notice": "Initialize the registry"
      },
      "transferToVault(address)": {
        "notice": "Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them."
      }
    }
  }
}