{
  "contractName": "Kernel",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "apps",
      "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": "recoveryVaultAppId",
      "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": true,
      "inputs": [],
      "name": "APP_MANAGER_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_shouldPetrify",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "isUpgradeable",
          "type": "bool"
        },
        {
          "indexed": false,
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "NewAppProxy",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "namespace",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "app",
          "type": "address"
        }
      ],
      "name": "SetApp",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_baseAcl",
          "type": "address"
        },
        {
          "name": "_permissionsCreator",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        },
        {
          "name": "_setDefault",
          "type": "bool"
        }
      ],
      "name": "newAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newPinnedAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        },
        {
          "name": "_setDefault",
          "type": "bool"
        }
      ],
      "name": "newPinnedAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_namespace",
          "type": "bytes32"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_app",
          "type": "address"
        }
      ],
      "name": "setApp",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_recoveryVaultAppId",
          "type": "bytes32"
        }
      ],
      "name": "setRecoveryVaultAppId",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CORE_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_BASES_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_ADDR_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "KERNEL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DEFAULT_ACL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_namespace",
          "type": "bytes32"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "getApp",
      "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": "acl",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_who",
          "type": "address"
        },
        {
          "name": "_where",
          "type": "address"
        },
        {
          "name": "_what",
          "type": "bytes32"
        },
        {
          "name": "_how",
          "type": "bytes"
        }
      ],
      "name": "hasPermission",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051602080620042268339810180604052810190808051906020019092919050505080156200005657620000556200005d640100000000026401000000009004565b5b5062000343565b60006200007862000198640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a454400000000000000008152509015156200015b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200011f57808201518184015260208101905062000102565b50505050905090810190601f1680156200014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620001967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620001e5640100000000026401000000009004565b565b6000620001e07febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916620003316401000000000262002b63176401000000009004565b905090565b60006200020062000198640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515620002e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620002a75780820151818401526020810190506200028a565b50505050905090810190601f168015620002d55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200032e817febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166200033c6401000000000262002c3c179091906401000000009004565b50565b600081549050919050565b8082555050565b613ed380620003536000396000f30060806040526004361062000187576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac0146200018c5780631113ed0d14620001be578063178e607914620001f457806332f0a3b5146200022a578063397edd4114620002845780634558850c146200036a578063485cc95514620003ec578063756f604914620004525780637e7db6e1146200048857806380cd5ac314620004e657806386070cfe146200057a5780638b3dd74914620005b05780638c61757d14620005de5780638ea8dc9d1462000612578063958fde8214620006485780639d4941d814620006dc578063ae5b25401462000722578063be00bbd81462000784578063c050a7a61462000806578063d162f8b014620008ec578063db8a61d414620009c6578063de28735914620009fc578063de4796ed1462000a56578063e156a8f31462000a88578063e8187ff01462000b1c578063ede658b01462000b52578063fdef91061462000c2c578063ff289fc51462000cfe575b600080fd5b3480156200019957600080fd5b50620001a462000d92565b604051808215151515815260200191505060405180910390f35b348015620001cb57600080fd5b50620001d662000dc2565b60405180826000191660001916815260200191505060405180910390f35b3480156200020157600080fd5b506200020c62000ded565b60405180826000191660001916815260200191505060405180910390f35b3480156200023757600080fd5b506200024262000e18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200029157600080fd5b50620003286004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080351515906020019092919050505062000e98565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200037757600080fd5b50620003aa6004803603810190808035600019169060200190929190803560001916906020019092919050505062001072565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620003f957600080fd5b5062000450600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620010b4565b005b3480156200045f57600080fd5b506200046a6200136e565b60405180826000191660001916815260200191505060405180910390f35b3480156200049557600080fd5b50620004cc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001399565b604051808215151515815260200191505060405180910390f35b348015620004f357600080fd5b50620005386004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620013a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200058757600080fd5b50620005926200154b565b60405180826000191660001916815260200191505060405180910390f35b348015620005bd57600080fd5b50620005c862001551565b6040518082815260200191505060405180910390f35b348015620005eb57600080fd5b506200061060048036038101908080356000191690602001909291905050506200158a565b005b3480156200061f57600080fd5b506200062a620016f1565b60405180826000191660001916815260200191505060405180910390f35b3480156200065557600080fd5b506200069a6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001718565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620006e957600080fd5b5062000720600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620018bf565b005b3480156200072f57600080fd5b506200078260048036038101908080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001d08565b005b3480156200079157600080fd5b50620007c46004803603810190808035600019169060200190929190803560001916906020019092919050505062001e50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200081357600080fd5b50620008aa6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080351515906020019092919050505062001eae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620008f957600080fd5b5062000984600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062002088565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620009d357600080fd5b50620009de620021f7565b60405180826000191660001916815260200191505060405180910390f35b34801562000a0957600080fd5b5062000a1462002222565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000a6357600080fd5b5062000a6e6200227b565b604051808215151515815260200191505060405180910390f35b34801562000a9557600080fd5b5062000ada600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050620022ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000b2957600080fd5b5062000b34620022fa565b60405180826000191660001916815260200191505060405180910390f35b34801562000b5f57600080fd5b5062000bea600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062002325565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000c3957600080fd5b5062000ce4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062002494565b604051808215151515815260200191505060405180910390f35b34801562000d0b57600080fd5b5062000d50600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505062002675565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008062000d9f62001551565b90506000811415801562000dbc57508062000db9620026c1565b10155b91505090565b60007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c600102905090565b60007fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb600102905090565b60008060007fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001026000191660001916815260200190815260200160002060006001546000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010262000eed7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010287620026c9565b606060006020835102905082915080825262000f0c3330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c4544000000000000000000000000000081525090151562000fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000fb257808201518184015260208101905062000f95565b50505050905090810190601f16801562000fe05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200101f7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6001028a8a620026e7565b6200102c308a8962002325565b945085156200106657620010657fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001028a8762001d08565b5b50505050949350505050565b60006020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080620010c162001551565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515620011a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620011685780820151818401526020810190506200114b565b50505050905090810190601f168015620011965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620011af6200285a565b620012027ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6001027fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a6001028562002991565b62001231307fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a600102620022ae565b90508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620012cf57600080fd5b505af1158015620012e4573d6000803e3d6000fd5b505050506200133b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a6001028362002991565b7f7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d160010260018160001916905550505050565b60007fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8600102905090565b600060019050919050565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0600102620013f97ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010285620026c9565b6060600060208351029050829150808252620014183330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c45440000000000000000000000000000815250901515620014fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620014be578082015181840152602081019050620014a1565b50505050905090810190601f168015620014ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200153f878760006040519080825280601f01601f191660200182016040528015620015365781602001602082028038833980820191505090505b50600062000e98565b94505050505092915050565b60015481565b6000620015857febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6001026000191662002b63565b905090565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0600102620015dd7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60010283620026c9565b6060600060208351029050829150808252620015fc3330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c45440000000000000000000000000000815250901515620016de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620016a257808201518184015260208101905062001685565b50505050905090810190601f168015620016d05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600181600019169055505050505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010281565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd06001026200176d7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010285620026c9565b60606000602083510290508291508082526200178c3330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c454400000000000000000000000000008152509015156200186e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200183257808201518184015260208101905062001815565b50505050905090810190601f168015620018605780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620018b3878760006040519080825280601f01601f191660200182016040528015620018aa5781602001602082028038833980820191505090505b50600062001eae565b94505050505092915050565b600080620018cd8362001399565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f5745440000000000000000000000000000815250901515620019af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200197357808201518184015260208101905062001956565b50505050905090810190601f168015620019a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620019ba62000e18565b9150620019c78262002b6e565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000081525090151562001aa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001a6d57808201518184015260208101905062001a50565b50505050905090810190601f16801562001a9b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562001b45578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801562001b3e573d6000803e3d6000fd5b5062001d03565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562001be157600080fd5b505af115801562001bf6573d6000803e3d6000fd5b505050506040513d602081101562001c0d57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801562001cc457600080fd5b505af115801562001cd9573d6000803e3d6000fd5b505050506040513d602081101562001cf057600080fd5b8101908080519060200190929190505050505b505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010262001d388484620026c9565b606060006020835102905082915080825262001d573330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c4544000000000000000000000000000081525090151562001e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001dfd57808201518184015260208101905062001de0565b50505050905090810190601f16801562001e2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5062001e4787878762002991565b50505050505050565b600080600084600019166000191681526020019081526020016000206000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010262001f037ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010287620026c9565b606060006020835102905082915080825262001f223330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c4544000000000000000000000000000081525090151562002004576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001fc857808201518184015260208101905062001fab565b50505050905090810190601f16801562001ff65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620020357ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6001028a8a620026e7565b62002042308a8962002088565b945085156200207c576200207b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001028a8762001d08565b5b50505050949350505050565b6000808484846200209862002c43565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562002117578082015181840152602081019050620020fa565b50505050905090810190601f168015620021455780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015801562002169573d6000803e3d6000fd5b5090507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf4781600086604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018260001916600019168152602001935050505060405180910390a1809150509392505050565b60007ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102905090565b6000620022767fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a60010262001e50565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620022a862001551565b14905090565b6000620022f2838360006040519080825280601f01601f191660200182016040528015620022eb5781602001602082028038833980820191505090505b5062002325565b905092915050565b60007fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a600102905090565b6000808484846200233562002c54565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620023b457808201518184015260208101905062002397565b50505050905090810190601f168015620023e25780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015801562002406573d6000803e3d6000fd5b5090507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf4781600186604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018260001916600019168152602001935050505060405180910390a1809150509392505050565b600080620024a162002222565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156200266a57508073ffffffffffffffffffffffffffffffffffffffff1663fdef9106878787876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620025db578082015181840152602081019050620025be565b50505050905090810190601f168015620026095780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156200262c57600080fd5b505af115801562002641573d6000803e3d6000fd5b505050506040513d60208110156200265857600080fd5b81019080805190602001909291905050505b915050949350505050565b6000620026b9838360006040519080825280601f01601f191660200182016040528015620026b25781602001602082028038833980820191505090505b5062002088565b905092915050565b600043905090565b6060620026df8360019004836001900462002bc2565b905092915050565b6000620026f5848462001e50565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151562002846578173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601981526020017f4b45524e454c5f494e56414c49445f4150505f4348414e4745000000000000008152509015156200283f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562002803578082015181840152602081019050620027e6565b50505050905090810190601f168015620028315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5062002854565b6200285384848462002991565b5b50505050565b60006200286662001551565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a4544000000000000000081525090151562002949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200290d578082015181840152602081019050620028f0565b50505050905090810190601f1680156200293b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200298f62002958620026c1565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6001026000191662002c3c90919063ffffffff16565b565b6200299c8162002b6e565b6040805190810160405280601781526020017f4b45524e454c5f4150505f4e4f545f434f4e545241435400000000000000000081525090151562002a7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562002a4257808201518184015260208101905062002a25565b50505050905090810190601f16801562002a705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508060008085600019166000191681526020019081526020016000206000846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816000191683600019167f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b2383604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a3505050565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562002bb1576000915062002bbc565b823b90506000811191505b50919050565b6060600260405190808252806020026020018201604052801562002bf55781602001602082028038833980820191505090505b5090508281600081518110151562002c0957fe5b90602001906020020181815250508181600181518110151562002c2857fe5b906020019060200201818152505092915050565b8082555050565b60405161093c8062002c6683390190565b60405161090680620035a2833901905600608060405234801561001057600080fd5b5060405161093c38038061093c8339810180604052810190808051906020019092919080519060200190929190805182019291905050508282826000610064846101c8640100000000026401000000009004565b61007c83610212640100000000026401000000009004565b6100948361025c640100000000026401000000009004565b9050600082511115610154576100b881610360640100000000026401000000009004565b15156100c357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b838110156101085780820151818401526020810190506100ed565b50505050905090810190601f1680156101355780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561015357600080fd5b5b505050506101876101738361025c640100000000026401000000009004565b6103b2640100000000026401000000009004565b6101b56101a16103fc640100000000026401000000009004565b610360640100000000026401000000009004565b15156101c057600080fd5b5050506104a9565b61020f817f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b600102600019166104466401000000000261044a179091906401000000009004565b50565b610259817fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6001026000191661044d64010000000002610451179091906401000000009004565b50565b6000610275610454640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561031e57600080fd5b505af1158015610332573d6000803e3d6000fd5b505050506040513d602081101561034857600080fd5b81019080805190602001909291905050509050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103a157600091506103ac565b823b90506000811191505b50919050565b6103f9817fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e600102600019166104466401000000000261044a179091906401000000009004565b50565b60006104417fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e6001026000191661049e6401000000000261043f176401000000009004565b905090565b8082555050565b8082555050565b60006104997f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6001026000191661049e6401000000000261043f176401000000009004565b905090565b600081549050919050565b610484806104b86000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461016557806348a0c8dd146101905780635c60da1b146101bf57806380afdea814610216578063d4aae0c414610249575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102a0565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102d7565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506102e6565b5b50005b34801561017157600080fd5b5061017a610329565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101a56102a0565b604051808215151515815260200191505060405180910390f35b3480156101cb57600080fd5b506101d46102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022257600080fd5b5061022b610332565b60405180826000191660001916815260200191505060405180910390f35b34801561025557600080fd5b5061025e610369565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102d27f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea600102600019166103a0565b905090565b60006102e16103ab565b905090565b60006102f1836103e2565b15156102fc57600080fd5b612710905060008083516020850186855a03f43d604051816000823e8260008114610325578282f35b8282fd5b60006001905090565b60006103647fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b60010260001916610434565b905090565b600061039b7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6001026000191661043f565b905090565b600081549050919050565b60006103dd7fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e6001026000191661043f565b905090565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610423576000915061042e565b823b90506000811191505b50919050565b600081549050919050565b600081549050919050565b8082555050565b80825550505600a165627a7a7230582010f36a3c5f0fa27d94b088de61050afc2943eceed187bea1b666d82da9504ae30029608060405234801561001057600080fd5b50604051610906380380610906833981018060405281019080805190602001909291908051906020019092919080518201929190505050828282600061006484610160640100000000026401000000009004565b61007c836101aa640100000000026401000000009004565b610094836101f4640100000000026401000000009004565b9050600082511115610154576100b8816102f8640100000000026401000000009004565b15156100c357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b838110156101085780820151818401526020810190506100ed565b50505050905090810190601f1680156101355780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561015357600080fd5b5b505050505050506103ad565b6101a7817f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6001026000191661034a64010000000002610510179091906401000000009004565b50565b6101f1817fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6001026000191661035164010000000002610517179091906401000000009004565b50565b600061020d610358640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b1580156102b657600080fd5b505af11580156102ca573d6000803e3d6000fd5b505050506040513d60208110156102e057600080fd5b81019080805190602001909291905050509050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103395760009150610344565b823b90506000811191505b50919050565b8082555050565b8082555050565b600061039d7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b600102600019166103a264010000000002610505176401000000009004565b905090565b600081549050919050565b61054a806103bc6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461016557806348a0c8dd146101905780635c60da1b146101bf57806380afdea814610216578063d4aae0c414610249575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102a0565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102d7565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506102ee565b5b50005b34801561017157600080fd5b5061017a610331565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101a56102a0565b604051808215151515815260200191505060405180910390f35b3480156101cb57600080fd5b506101d46102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022257600080fd5b5061022b61033a565b60405180826000191660001916815260200191505060405180910390f35b34801561025557600080fd5b5061025e610371565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102d27f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea600102600019166103a8565b905090565b60006102e96102e461033a565b6103b3565b905090565b60006102f9836104a8565b151561030457600080fd5b612710905060008083516020850186855a03f43d604051816000823e826000811461032d578282f35b8282fd5b60006002905090565b600061036c7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b600102600019166104fa565b905090565b60006103a37f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916610505565b905090565b600081549050919050565b60006103bd610371565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561046657600080fd5b505af115801561047a573d6000803e3d6000fd5b505050506040513d602081101561049057600080fd5b81019080805190602001909291905050509050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104e957600091506104f4565b823b90506000811191505b50919050565b600081549050919050565b600081549050919050565b8082555050565b80825550505600a165627a7a72305820f1912f3338ba4aa4b1b5044dfef799d354879c210a66c163d99db9ce60be509e0029a165627a7a723058207f7f4b9688d77eb8f3a4905d591fdf4ea783e7d365ee78cafc3df59ce33ea63b0029",
  "deployedBytecode": "0x60806040526004361062000187576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac0146200018c5780631113ed0d14620001be578063178e607914620001f457806332f0a3b5146200022a578063397edd4114620002845780634558850c146200036a578063485cc95514620003ec578063756f604914620004525780637e7db6e1146200048857806380cd5ac314620004e657806386070cfe146200057a5780638b3dd74914620005b05780638c61757d14620005de5780638ea8dc9d1462000612578063958fde8214620006485780639d4941d814620006dc578063ae5b25401462000722578063be00bbd81462000784578063c050a7a61462000806578063d162f8b014620008ec578063db8a61d414620009c6578063de28735914620009fc578063de4796ed1462000a56578063e156a8f31462000a88578063e8187ff01462000b1c578063ede658b01462000b52578063fdef91061462000c2c578063ff289fc51462000cfe575b600080fd5b3480156200019957600080fd5b50620001a462000d92565b604051808215151515815260200191505060405180910390f35b348015620001cb57600080fd5b50620001d662000dc2565b60405180826000191660001916815260200191505060405180910390f35b3480156200020157600080fd5b506200020c62000ded565b60405180826000191660001916815260200191505060405180910390f35b3480156200023757600080fd5b506200024262000e18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200029157600080fd5b50620003286004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080351515906020019092919050505062000e98565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200037757600080fd5b50620003aa6004803603810190808035600019169060200190929190803560001916906020019092919050505062001072565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620003f957600080fd5b5062000450600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620010b4565b005b3480156200045f57600080fd5b506200046a6200136e565b60405180826000191660001916815260200191505060405180910390f35b3480156200049557600080fd5b50620004cc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001399565b604051808215151515815260200191505060405180910390f35b348015620004f357600080fd5b50620005386004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620013a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200058757600080fd5b50620005926200154b565b60405180826000191660001916815260200191505060405180910390f35b348015620005bd57600080fd5b50620005c862001551565b6040518082815260200191505060405180910390f35b348015620005eb57600080fd5b506200061060048036038101908080356000191690602001909291905050506200158a565b005b3480156200061f57600080fd5b506200062a620016f1565b60405180826000191660001916815260200191505060405180910390f35b3480156200065557600080fd5b506200069a6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001718565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620006e957600080fd5b5062000720600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620018bf565b005b3480156200072f57600080fd5b506200078260048036038101908080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001d08565b005b3480156200079157600080fd5b50620007c46004803603810190808035600019169060200190929190803560001916906020019092919050505062001e50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200081357600080fd5b50620008aa6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080351515906020019092919050505062001eae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620008f957600080fd5b5062000984600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062002088565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620009d357600080fd5b50620009de620021f7565b60405180826000191660001916815260200191505060405180910390f35b34801562000a0957600080fd5b5062000a1462002222565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000a6357600080fd5b5062000a6e6200227b565b604051808215151515815260200191505060405180910390f35b34801562000a9557600080fd5b5062000ada600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050620022ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000b2957600080fd5b5062000b34620022fa565b60405180826000191660001916815260200191505060405180910390f35b34801562000b5f57600080fd5b5062000bea600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062002325565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000c3957600080fd5b5062000ce4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062002494565b604051808215151515815260200191505060405180910390f35b34801562000d0b57600080fd5b5062000d50600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505062002675565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008062000d9f62001551565b90506000811415801562000dbc57508062000db9620026c1565b10155b91505090565b60007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c600102905090565b60007fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb600102905090565b60008060007fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001026000191660001916815260200190815260200160002060006001546000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010262000eed7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010287620026c9565b606060006020835102905082915080825262000f0c3330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c4544000000000000000000000000000081525090151562000fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000fb257808201518184015260208101905062000f95565b50505050905090810190601f16801562000fe05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200101f7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6001028a8a620026e7565b6200102c308a8962002325565b945085156200106657620010657fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001028a8762001d08565b5b50505050949350505050565b60006020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080620010c162001551565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515620011a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620011685780820151818401526020810190506200114b565b50505050905090810190601f168015620011965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620011af6200285a565b620012027ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6001027fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a6001028562002991565b62001231307fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a600102620022ae565b90508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620012cf57600080fd5b505af1158015620012e4573d6000803e3d6000fd5b505050506200133b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a6001028362002991565b7f7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d160010260018160001916905550505050565b60007fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8600102905090565b600060019050919050565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0600102620013f97ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010285620026c9565b6060600060208351029050829150808252620014183330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c45440000000000000000000000000000815250901515620014fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620014be578082015181840152602081019050620014a1565b50505050905090810190601f168015620014ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200153f878760006040519080825280601f01601f191660200182016040528015620015365781602001602082028038833980820191505090505b50600062000e98565b94505050505092915050565b60015481565b6000620015857febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6001026000191662002b63565b905090565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0600102620015dd7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60010283620026c9565b6060600060208351029050829150808252620015fc3330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c45440000000000000000000000000000815250901515620016de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620016a257808201518184015260208101905062001685565b50505050905090810190601f168015620016d05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600181600019169055505050505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010281565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd06001026200176d7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010285620026c9565b60606000602083510290508291508082526200178c3330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c454400000000000000000000000000008152509015156200186e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200183257808201518184015260208101905062001815565b50505050905090810190601f168015620018605780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620018b3878760006040519080825280601f01601f191660200182016040528015620018aa5781602001602082028038833980820191505090505b50600062001eae565b94505050505092915050565b600080620018cd8362001399565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f5745440000000000000000000000000000815250901515620019af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200197357808201518184015260208101905062001956565b50505050905090810190601f168015620019a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620019ba62000e18565b9150620019c78262002b6e565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000081525090151562001aa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001a6d57808201518184015260208101905062001a50565b50505050905090810190601f16801562001a9b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562001b45578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801562001b3e573d6000803e3d6000fd5b5062001d03565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562001be157600080fd5b505af115801562001bf6573d6000803e3d6000fd5b505050506040513d602081101562001c0d57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801562001cc457600080fd5b505af115801562001cd9573d6000803e3d6000fd5b505050506040513d602081101562001cf057600080fd5b8101908080519060200190929190505050505b505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010262001d388484620026c9565b606060006020835102905082915080825262001d573330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c4544000000000000000000000000000081525090151562001e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001dfd57808201518184015260208101905062001de0565b50505050905090810190601f16801562001e2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5062001e4787878762002991565b50505050505050565b600080600084600019166000191681526020019081526020016000206000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd060010262001f037ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f60010287620026c9565b606060006020835102905082915080825262001f223330868562002494565b6040805190810160405280601281526020017f4b45524e454c5f415554485f4641494c4544000000000000000000000000000081525090151562002004576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001fc857808201518184015260208101905062001fab565b50505050905090810190601f16801562001ff65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620020357ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6001028a8a620026e7565b62002042308a8962002088565b945085156200207c576200207b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001028a8762001d08565b5b50505050949350505050565b6000808484846200209862002c43565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562002117578082015181840152602081019050620020fa565b50505050905090810190601f168015620021455780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015801562002169573d6000803e3d6000fd5b5090507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf4781600086604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018260001916600019168152602001935050505060405180910390a1809150509392505050565b60007ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102905090565b6000620022767fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a60010262001e50565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620022a862001551565b14905090565b6000620022f2838360006040519080825280601f01601f191660200182016040528015620022eb5781602001602082028038833980820191505090505b5062002325565b905092915050565b60007fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a600102905090565b6000808484846200233562002c54565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620023b457808201518184015260208101905062002397565b50505050905090810190601f168015620023e25780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015801562002406573d6000803e3d6000fd5b5090507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf4781600186604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018260001916600019168152602001935050505060405180910390a1809150509392505050565b600080620024a162002222565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156200266a57508073ffffffffffffffffffffffffffffffffffffffff1663fdef9106878787876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620025db578082015181840152602081019050620025be565b50505050905090810190601f168015620026095780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156200262c57600080fd5b505af115801562002641573d6000803e3d6000fd5b505050506040513d60208110156200265857600080fd5b81019080805190602001909291905050505b915050949350505050565b6000620026b9838360006040519080825280601f01601f191660200182016040528015620026b25781602001602082028038833980820191505090505b5062002088565b905092915050565b600043905090565b6060620026df8360019004836001900462002bc2565b905092915050565b6000620026f5848462001e50565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151562002846578173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601981526020017f4b45524e454c5f494e56414c49445f4150505f4348414e4745000000000000008152509015156200283f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562002803578082015181840152602081019050620027e6565b50505050905090810190601f168015620028315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5062002854565b6200285384848462002991565b5b50505050565b60006200286662001551565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a4544000000000000000081525090151562002949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200290d578082015181840152602081019050620028f0565b50505050905090810190601f1680156200293b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200298f62002958620026c1565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6001026000191662002c3c90919063ffffffff16565b565b6200299c8162002b6e565b6040805190810160405280601781526020017f4b45524e454c5f4150505f4e4f545f434f4e545241435400000000000000000081525090151562002a7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562002a4257808201518184015260208101905062002a25565b50505050905090810190601f16801562002a705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508060008085600019166000191681526020019081526020016000206000846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816000191683600019167f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b2383604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a3505050565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562002bb1576000915062002bbc565b823b90506000811191505b50919050565b6060600260405190808252806020026020018201604052801562002bf55781602001602082028038833980820191505090505b5090508281600081518110151562002c0957fe5b90602001906020020181815250508181600181518110151562002c2857fe5b906020019060200201818152505092915050565b8082555050565b60405161093c8062002c6683390190565b60405161090680620035a2833901905600608060405234801561001057600080fd5b5060405161093c38038061093c8339810180604052810190808051906020019092919080519060200190929190805182019291905050508282826000610064846101c8640100000000026401000000009004565b61007c83610212640100000000026401000000009004565b6100948361025c640100000000026401000000009004565b9050600082511115610154576100b881610360640100000000026401000000009004565b15156100c357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b838110156101085780820151818401526020810190506100ed565b50505050905090810190601f1680156101355780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561015357600080fd5b5b505050506101876101738361025c640100000000026401000000009004565b6103b2640100000000026401000000009004565b6101b56101a16103fc640100000000026401000000009004565b610360640100000000026401000000009004565b15156101c057600080fd5b5050506104a9565b61020f817f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b600102600019166104466401000000000261044a179091906401000000009004565b50565b610259817fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6001026000191661044d64010000000002610451179091906401000000009004565b50565b6000610275610454640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561031e57600080fd5b505af1158015610332573d6000803e3d6000fd5b505050506040513d602081101561034857600080fd5b81019080805190602001909291905050509050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103a157600091506103ac565b823b90506000811191505b50919050565b6103f9817fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e600102600019166104466401000000000261044a179091906401000000009004565b50565b60006104417fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e6001026000191661049e6401000000000261043f176401000000009004565b905090565b8082555050565b8082555050565b60006104997f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6001026000191661049e6401000000000261043f176401000000009004565b905090565b600081549050919050565b610484806104b86000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461016557806348a0c8dd146101905780635c60da1b146101bf57806380afdea814610216578063d4aae0c414610249575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102a0565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102d7565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506102e6565b5b50005b34801561017157600080fd5b5061017a610329565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101a56102a0565b604051808215151515815260200191505060405180910390f35b3480156101cb57600080fd5b506101d46102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022257600080fd5b5061022b610332565b60405180826000191660001916815260200191505060405180910390f35b34801561025557600080fd5b5061025e610369565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102d27f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea600102600019166103a0565b905090565b60006102e16103ab565b905090565b60006102f1836103e2565b15156102fc57600080fd5b612710905060008083516020850186855a03f43d604051816000823e8260008114610325578282f35b8282fd5b60006001905090565b60006103647fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b60010260001916610434565b905090565b600061039b7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6001026000191661043f565b905090565b600081549050919050565b60006103dd7fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e6001026000191661043f565b905090565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610423576000915061042e565b823b90506000811191505b50919050565b600081549050919050565b600081549050919050565b8082555050565b80825550505600a165627a7a7230582010f36a3c5f0fa27d94b088de61050afc2943eceed187bea1b666d82da9504ae30029608060405234801561001057600080fd5b50604051610906380380610906833981018060405281019080805190602001909291908051906020019092919080518201929190505050828282600061006484610160640100000000026401000000009004565b61007c836101aa640100000000026401000000009004565b610094836101f4640100000000026401000000009004565b9050600082511115610154576100b8816102f8640100000000026401000000009004565b15156100c357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b838110156101085780820151818401526020810190506100ed565b50505050905090810190601f1680156101355780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561015357600080fd5b5b505050505050506103ad565b6101a7817f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6001026000191661034a64010000000002610510179091906401000000009004565b50565b6101f1817fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6001026000191661035164010000000002610517179091906401000000009004565b50565b600061020d610358640100000000026401000000009004565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b1580156102b657600080fd5b505af11580156102ca573d6000803e3d6000fd5b505050506040513d60208110156102e057600080fd5b81019080805190602001909291905050509050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103395760009150610344565b823b90506000811191505b50919050565b8082555050565b8082555050565b600061039d7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b600102600019166103a264010000000002610505176401000000009004565b905090565b600081549050919050565b61054a806103bc6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461016557806348a0c8dd146101905780635c60da1b146101bf57806380afdea814610216578063d4aae0c414610249575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102a0565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102d7565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506102ee565b5b50005b34801561017157600080fd5b5061017a610331565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101a56102a0565b604051808215151515815260200191505060405180910390f35b3480156101cb57600080fd5b506101d46102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022257600080fd5b5061022b61033a565b60405180826000191660001916815260200191505060405180910390f35b34801561025557600080fd5b5061025e610371565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102d27f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea600102600019166103a8565b905090565b60006102e96102e461033a565b6103b3565b905090565b60006102f9836104a8565b151561030457600080fd5b612710905060008083516020850186855a03f43d604051816000823e826000811461032d578282f35b8282fd5b60006002905090565b600061036c7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b600102600019166104fa565b905090565b60006103a37f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916610505565b905090565b600081549050919050565b60006103bd610371565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600102846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561046657600080fd5b505af115801561047a573d6000803e3d6000fd5b505050506040513d602081101561049057600080fd5b81019080805190602001909291905050509050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104e957600091506104f4565b823b90506000811191505b50919050565b600081549050919050565b600081549050919050565b8082555050565b80825550505600a165627a7a72305820f1912f3338ba4aa4b1b5044dfef799d354879c210a66c163d99db9ce60be509e0029a165627a7a723058207f7f4b9688d77eb8f3a4905d591fdf4ea783e7d365ee78cafc3df59ce33ea63b0029",
  "sourceMap": "399:10558:44:-;;;1263:110;8:9:-1;5:2;;;30:1;27;20:12;5:2;1263:110:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:14;1313:54;;;1347:9;:7;;;:9;;;:::i;:::-;1313:54;1263:110;399:10558;;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;399:10558:44:-;;;;;;;",
  "deployedSourceMap": "399:10558:44:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1136:208:26;;;;;;;;;;;;;;;;;;;;;;;;;;;7877:87:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7877:87:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7773:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7773:99:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8588:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8588:133:44;;;;;;;;;;;;;;;;;;;;;;;;;;;3696:675;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3696:675:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;93:61:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;93:61:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1776:537:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1776:537:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7571:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7571:91:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:99:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1333:99:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2650:262:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;160:33:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;160:33:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;889:137:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;889:137:26;;;;;;;;;;;;;;;;;;;;;;;7190:220:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7190:220:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;687:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;687:109:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:274;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4720:274:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;687:446:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;687:446:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;6841:191:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6841:191:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8325:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8325:130:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5789:687;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5789:687:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;850:292:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;850:292:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7667:101:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7667:101:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8801:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8801:132:44;;;;;;;;;;;;;;;;;;;;;;;;;;;287:117:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:28;;;;;;;;;;;;;;;;;;;;;;;;;;;211:157:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;211:157:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7969:99:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7969:99:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;374:300:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;374:300:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9380:311:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9380:311:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;680:164:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;680:164:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;7877:87:44:-;7925:7;426:66:45;7943:18:44;;7936:25;;7877:87;:::o;7773:99::-;7826:7;1368:66:45;7844:25:44;;7837:32;;7773:99;:::o;8588:133::-;8637:7;8663:4;:31;1368:66:45;8668:25:44;;8663:31;;;;;;;;;;;;;;;;;:51;8695:18;;8663:51;;;;;;;;;;;;;;;;;;;;;;;;;;;8656:58;;8588:133;:::o;3696:675::-;3902:17;730:66;3826:16;;3844:39;1242:66:45;3848:26:44;;3876:6;3844:3;:39::i;:::-;10690:16;10716:18;10753:2;10737:6;:13;:18;10716:39;;10795:6;10788:13;;10826:10;10821:3;10814:23;10865:52;10879:10;10899:4;10906:5;10913:3;10865:13;:52::i;:::-;10919:17;;;;;;;;;;;;;;;;;;10857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10857:80:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3935:58;1242:66:45;3948:26:44;;3976:6;3984:8;3935:12;:58::i;:::-;4014:45;4026:4;4032:6;4040:18;4014:11;:45::i;:::-;4003:56;;4276:11;4272:93;;;4303:51;1368:66:45;4310:25:44;;4337:6;4345:8;4303:6;:51::i;:::-;4272:93;3696:675;;;;;;;;;;:::o;93:61:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1776:537:44:-;2065:8;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:13:44;:11;:13::i;:::-;1914:72;1242:66:45;1922:26:44;;552:66:45;1950:25:44;;1977:8;1914:7;:72::i;:::-;2081:44;2093:4;552:66:45;2099:25:44;;2081:11;:44::i;:::-;2065:61;;2136:3;:14;;;2151:19;2136:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2136:35:44;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2136:35:44;;;;2181:66;1368::45;2189:25:44;;552:66:45;2216:25:44;;2243:3;2181:7;:66::i;:::-;680::45;2279:27:44;;2258:18;:48;;;;;;;1776:537;;;:::o;7571:91::-;7620:7;1115:66:45;7638:21:44;;7631:28;;7571:91;:::o;1333:99:32:-;1398:4;1421;1414:11;;1333:99;;;:::o;2650:262:44:-;2812:17;730:66;2736:16;;2754:39;1242:66:45;2758:26:44;;2786:6;2754:3;:39::i;:::-;10690:16;10716:18;10753:2;10737:6;:13;:18;10716:39;;10795:6;10788:13;;10826:10;10821:3;10814:23;10865:52;10879:10;10899:4;10906:5;10913:3;10865:13;:52::i;:::-;10919:17;;;;;;;;;;;;;;;;;;10857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10857:80:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2852:53;2867:6;2875:8;2895:1;2885:12;;;;;;;;;;;;;;;;;;;;;;;;;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;2885:12:44;;;;2899:5;2852:14;:53::i;:::-;2845:60;;2650:262;;;;;;;;:::o;160:33:47:-;;;;:::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;:49::i;:::-;963:56;;889:137;:::o;7190:220:44:-;730:66;7278:16;;7296:51;1368:66:45;7300:25:44;;7327:19;7296:3;:51::i;:::-;10690:16;10716:18;10753:2;10737:6;:13;:18;10716:39;;10795:6;10788:13;;10826:10;10821:3;10814:23;10865:52;10879:10;10899:4;10906:5;10913:3;10865:13;:52::i;:::-;10919:17;;;;;;;;;;;;;;;;;;10857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10857:80:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7384:19;7363:18;:40;;;;;;;7190:220;;;;;:::o;687:109::-;730:66;687:109;;;:::o;4720:274::-;4888:17;730:66;4812:16;;4830:39;1242:66:45;4834:26:44;;4862:6;4830:3;:39::i;:::-;10690:16;10716:18;10753:2;10737:6;:13;:18;10716:39;;10795:6;10788:13;;10826:10;10821:3;10814:23;10865:52;10879:10;10899:4;10906:5;10913:3;10865:13;:52::i;:::-;10919:17;;;;;;;;;;;;;;;;;;10857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10857:80:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:59;4949:6;4957:8;4977:1;4967:12;;;;;;;;;;;;;;;;;;;;;;;;;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;4967:12:44;;;;4981:5;4928:20;:59::i;:::-;4921:66;;4720:274;;;;;;;;:::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;6841:191:44:-;730:66;6935:16;;6953:23;6957:10;6969:6;6953:3;:23::i;:::-;10690:16;10716:18;10753:2;10737:6;:13;:18;10716:39;;10795:6;10788:13;;10826:10;10821:3;10814:23;10865:52;10879:10;10899:4;10906:5;10913:3;10865:13;:52::i;:::-;10919:17;;;;;;;;;;;;;;;;;;10857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10857:80:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6992:33;7000:10;7012:6;7020:4;6992:7;:33::i;:::-;6841:191;;;;;;;:::o;8325:130::-;8398:7;8424:4;:16;8429:10;8424:16;;;;;;;;;;;;;;;;;:24;8441:6;8424:24;;;;;;;;;;;;;;;;;;;;;;;;;;;8417:31;;8325:130;;;;:::o;5789:687::-;6001:17;730:66;5925:16;;5943:39;1242:66:45;5947:26:44;;5975:6;5943:3;:39::i;:::-;10690:16;10716:18;10753:2;10737:6;:13;:18;10716:39;;10795:6;10788:13;;10826:10;10821:3;10814:23;10865:52;10879:10;10899:4;10906:5;10913:3;10865:13;:52::i;:::-;10919:17;;;;;;;;;;;;;;;;;;10857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10857:80:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6034:58;1242:66:45;6047:26:44;;6075:6;6083:8;6034:12;:58::i;:::-;6113:51;6131:4;6137:6;6145:18;6113:17;:51::i;:::-;6102:62;;6381:11;6377:93;;;6408:51;1368:66:45;6415:25:44;;6442:6;6450:8;6408:6;:51::i;:::-;6377:93;5789:687;;;;;;;;;;:::o;850:292:40:-;952:14;978:20;1020:7;1029:6;1037:18;1001:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1001:55:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1001:55:40;978:78;;1071:42;1091:5;1099;1106:6;1071:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1130:5;1123:12;;850:292;;;;;;:::o;7667:101:44:-;7721:7;1242:66:45;7739:26:44;;7732:33;;7667:101;:::o;8801:132::-;8837:4;8865:60;1368:66:45;8872:25:44;;552:66:45;8899:25:44;;8865:6;:60::i;:::-;8853:73;;8801:132;:::o;287:117:28:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;211:157:40:-;281:19;319:42;331:7;340:6;358:1;348:12;;;;;;;;;;;;;;;;;;;;;;;;;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;348:12:40;;;;319:11;:42::i;:::-;312:49;;211:157;;;;:::o;7969:99:44:-;8022:7;552:66:45;8040:25:44;;8033:32;;7969:99;:::o;374:300:40:-;470:19;501:25;553:7;562:6;570:18;529:60;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;529:60:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;529:60:40;501:88;;604:41;624:5;632:4;638:6;604:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:5;655:12;;374:300;;;;;;:::o;9380:311:44:-;9481:4;9497:15;9515:5;:3;:5::i;:::-;9497:23;;9568:1;9537:33;;9545:10;9537:33;;;;:147;;;;;9633:10;:24;;;9658:4;9664:6;9672:5;9679:4;9633:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;9633:51:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9633:51:44;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9633:51:44;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9633:51:44;;;;;;;;;;;;;;;;9537:147;9530:154;;9380:311;;;;;;;:::o;680:164:40:-;756:14;789:48;807:7;816:6;834:1;824:12;;;;;;;;;;;;;;;;;;;;;;;;;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;824:12:40;;;;789:17;:48::i;:::-;782:55;;680:164;;;;:::o;347:94:29:-;396:7;422:12;415:19;;347:94;:::o;265:126:10:-;325:11;355:29;367:2;359:11;;;380:2;372:11;;;355:3;:29::i;:::-;348:36;;265:126;;;;:::o;9933:414:44:-;10024:11;10038:26;10045:10;10057:6;10038;:26::i;:::-;10024:40;;10093:1;10078:17;;:3;:17;;;;10074:267;;;10235:4;10228:11;;:3;:11;;;10241:24;;;;;;;;;;;;;;;;;;10220:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10220:46:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10074:267;;;10297:33;10305:10;10317:6;10325:4;10297:7;:33::i;:::-;10074:267;9933:414;;;;:::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;9697:230:44:-;9791:16;9802:4;9791:10;:16::i;:::-;9809:22;;;;;;;;;;;;;;;;;;9783: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;9783:49:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9869:4;9842;:16;9847:10;9842:16;;;;;;;;;;;;;;;;;:24;9859:6;9842:24;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;9907:6;9888:32;;;9895:10;9888:32;;;;9915:4;9888:32;;;;;;;;;;;;;;;;;;;;;;9697:230;;;:::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;1679:148:10:-;1739:11;1780:1;1766: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;1766:16:10;;;;1762:20;;1799:2;1792:1;1794;1792:4;;;;;;;;;;;;;;;;;:9;;;;;1818:2;1811:1;1813;1811:4;;;;;;;;;;;;;;;;;:9;;;;;1679:148;;;;:::o;1028:119:31:-;1134:4;1124:8;1117:22;1115:26;;:::o;399:10558:44:-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"./IKernel.sol\";\nimport \"./KernelConstants.sol\";\nimport \"./KernelStorage.sol\";\nimport \"../acl/IACL.sol\";\nimport \"../acl/ACLSyntaxSugar.sol\";\nimport \"../lib/misc/ERCProxy.sol\";\nimport \"../common/IsContract.sol\";\nimport \"../common/Petrifiable.sol\";\nimport \"../common/VaultRecoverable.sol\";\nimport \"../factory/AppProxyFactory.sol\";\n\n\n// solium-disable-next-line max-len\ncontract Kernel is IKernel, KernelStorage, KernelAppIds, KernelNamespaceConstants, Petrifiable, IsContract, VaultRecoverable, AppProxyFactory, ACLSyntaxSugar {\n    /* Hardcoded constants to save gas\n    bytes32 public constant APP_MANAGER_ROLE = keccak256(\"APP_MANAGER_ROLE\");\n    */\n    bytes32 public constant APP_MANAGER_ROLE = 0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0;\n\n    string private constant ERROR_APP_NOT_CONTRACT = \"KERNEL_APP_NOT_CONTRACT\";\n    string private constant ERROR_INVALID_APP_CHANGE = \"KERNEL_INVALID_APP_CHANGE\";\n    string private constant ERROR_AUTH_FAILED = \"KERNEL_AUTH_FAILED\";\n\n    /**\n    * @dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n    * @param _shouldPetrify Immediately petrify this instance so that it can never be initialized\n    */\n    constructor(bool _shouldPetrify) public {\n        if (_shouldPetrify) {\n            petrify();\n        }\n    }\n\n    /**\n    * @dev Initialize can only be called once. It saves the block number in which it was initialized.\n    * @notice Initializes a kernel instance along with its ACL and sets `_permissionsCreator` as the entity that can create other permissions\n    * @param _baseAcl Address of base ACL app\n    * @param _permissionsCreator Entity that will be given permission over createPermission\n    */\n    function initialize(IACL _baseAcl, address _permissionsCreator) public onlyInit {\n        initialized();\n\n        // Set ACL base\n        _setApp(KERNEL_APP_BASES_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID, _baseAcl);\n\n        // Create ACL instance and attach it as the default ACL app\n        IACL acl = IACL(newAppProxy(this, KERNEL_DEFAULT_ACL_APP_ID));\n        acl.initialize(_permissionsCreator);\n        _setApp(KERNEL_APP_ADDR_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID, acl);\n\n        recoveryVaultAppId = KERNEL_DEFAULT_VAULT_APP_ID;\n    }\n\n    /**\n    * @dev Create a new instance of an app linked to this kernel\n    * @notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newAppInstance(bytes32 _appId, address _appBase)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        return newAppInstance(_appId, _appBase, new bytes(0), false);\n    }\n\n    /**\n    * @dev Create a new instance of an app linked to this kernel and set its base\n    *      implementation if it was not already set\n    * @notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @param _initializePayload Payload for call made by the proxy during its construction to initialize\n    * @param _setDefault Whether the app proxy app is the default one.\n    *        Useful when the Kernel needs to know of an instance of a particular app,\n    *        like Vault for escape hatch mechanism.\n    * @return AppProxy instance\n    */\n    function newAppInstance(bytes32 _appId, address _appBase, bytes _initializePayload, bool _setDefault)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        _setAppIfNew(KERNEL_APP_BASES_NAMESPACE, _appId, _appBase);\n        appProxy = newAppProxy(this, _appId, _initializePayload);\n        // By calling setApp directly and not the internal functions, we make sure the params are checked\n        // and it will only succeed if sender has permissions to set something to the namespace.\n        if (_setDefault) {\n            setApp(KERNEL_APP_ADDR_NAMESPACE, _appId, appProxy);\n        }\n    }\n\n    /**\n    * @dev Create a new pinned instance of an app linked to this kernel\n    * @notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newPinnedAppInstance(bytes32 _appId, address _appBase)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        return newPinnedAppInstance(_appId, _appBase, new bytes(0), false);\n    }\n\n    /**\n    * @dev Create a new pinned instance of an app linked to this kernel and set\n    *      its base implementation if it was not already set\n    * @notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @param _initializePayload Payload for call made by the proxy during its construction to initialize\n    * @param _setDefault Whether the app proxy app is the default one.\n    *        Useful when the Kernel needs to know of an instance of a particular app,\n    *        like Vault for escape hatch mechanism.\n    * @return AppProxy instance\n    */\n    function newPinnedAppInstance(bytes32 _appId, address _appBase, bytes _initializePayload, bool _setDefault)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        _setAppIfNew(KERNEL_APP_BASES_NAMESPACE, _appId, _appBase);\n        appProxy = newAppProxyPinned(this, _appId, _initializePayload);\n        // By calling setApp directly and not the internal functions, we make sure the params are checked\n        // and it will only succeed if sender has permissions to set something to the namespace.\n        if (_setDefault) {\n            setApp(KERNEL_APP_ADDR_NAMESPACE, _appId, appProxy);\n        }\n    }\n\n    /**\n    * @dev Set the resolving address of an app instance or base implementation\n    * @notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n    * @param _namespace App namespace to use\n    * @param _appId Identifier for app\n    * @param _app Address of the app instance or base implementation\n    * @return ID of app\n    */\n    function setApp(bytes32 _namespace, bytes32 _appId, address _app)\n        public\n        auth(APP_MANAGER_ROLE, arr(_namespace, _appId))\n    {\n        _setApp(_namespace, _appId, _app);\n    }\n\n    /**\n    * @dev Set the default vault id for the escape hatch mechanism\n    * @param _recoveryVaultAppId Identifier of the recovery vault app\n    */\n    function setRecoveryVaultAppId(bytes32 _recoveryVaultAppId)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_ADDR_NAMESPACE, _recoveryVaultAppId))\n    {\n        recoveryVaultAppId = _recoveryVaultAppId;\n    }\n\n    // External access to default app id and namespace constants to mimic default getters for constants\n    /* solium-disable function-order, mixedcase */\n    function CORE_NAMESPACE() external pure returns (bytes32) { return KERNEL_CORE_NAMESPACE; }\n    function APP_BASES_NAMESPACE() external pure returns (bytes32) { return KERNEL_APP_BASES_NAMESPACE; }\n    function APP_ADDR_NAMESPACE() external pure returns (bytes32) { return KERNEL_APP_ADDR_NAMESPACE; }\n    function KERNEL_APP_ID() external pure returns (bytes32) { return KERNEL_CORE_APP_ID; }\n    function DEFAULT_ACL_APP_ID() external pure returns (bytes32) { return KERNEL_DEFAULT_ACL_APP_ID; }\n    /* solium-enable function-order, mixedcase */\n\n    /**\n    * @dev Get the address of an app instance or base implementation\n    * @param _namespace App namespace to use\n    * @param _appId Identifier for app\n    * @return Address of the app\n    */\n    function getApp(bytes32 _namespace, bytes32 _appId) public view returns (address) {\n        return apps[_namespace][_appId];\n    }\n\n    /**\n    * @dev Get the address of the recovery Vault instance (to recover funds)\n    * @return Address of the Vault\n    */\n    function getRecoveryVault() public view returns (address) {\n        return apps[KERNEL_APP_ADDR_NAMESPACE][recoveryVaultAppId];\n    }\n\n    /**\n    * @dev Get the installed ACL app\n    * @return ACL app\n    */\n    function acl() public view returns (IACL) {\n        return IACL(getApp(KERNEL_APP_ADDR_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID));\n    }\n\n    /**\n    * @dev Function called by apps to check ACL on kernel or to check permission status\n    * @param _who Sender of the original call\n    * @param _where Address of the app\n    * @param _what Identifier for a group of actions in app\n    * @param _how Extra data for ACL auth\n    * @return Boolean indicating whether the ACL allows the role or not.\n    *         Always returns false if the kernel hasn't been initialized yet.\n    */\n    function hasPermission(address _who, address _where, bytes32 _what, bytes _how) public view returns (bool) {\n        IACL defaultAcl = acl();\n        return address(defaultAcl) != address(0) && // Poor man's initialization check (saves gas)\n            defaultAcl.hasPermission(_who, _where, _what, _how);\n    }\n\n    function _setApp(bytes32 _namespace, bytes32 _appId, address _app) internal {\n        require(isContract(_app), ERROR_APP_NOT_CONTRACT);\n        apps[_namespace][_appId] = _app;\n        emit SetApp(_namespace, _appId, _app);\n    }\n\n    function _setAppIfNew(bytes32 _namespace, bytes32 _appId, address _app) internal {\n        address app = getApp(_namespace, _appId);\n        if (app != address(0)) {\n            // The only way to set an app is if it passes the isContract check, so no need to check it again\n            require(app == _app, ERROR_INVALID_APP_CHANGE);\n        } else {\n            _setApp(_namespace, _appId, _app);\n        }\n    }\n\n    modifier auth(bytes32 _role, uint256[] memory params) {\n        // Force cast the uint256[] into a bytes array, by overwriting its length\n        // Note that the bytes array doesn't need to be initialized as we immediately overwrite it\n        // with params and a new length, and params becomes invalid from this point forward\n        bytes memory how;\n        uint256 byteLength = params.length * 32;\n        assembly {\n            how := params\n            mstore(how, byteLength)\n        }\n\n        require(hasPermission(msg.sender, address(this), _role, how), ERROR_AUTH_FAILED);\n        _;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/kernel/Kernel.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
    "exportedSymbols": {
      "Kernel": [
        10747
      ]
    },
    "id": 10748,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10250,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:44"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 10251,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 10249,
        "src": "25:23:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 10252,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 10770,
        "src": "49:31:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 10253,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 10841,
        "src": "81:29:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 10254,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 7682,
        "src": "111:25:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 10255,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 7661,
        "src": "137:35:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/misc/ERCProxy.sol",
        "file": "../lib/misc/ERCProxy.sol",
        "id": 10256,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 11873,
        "src": "173:34:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 10257,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 8790,
        "src": "208:34:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Petrifiable.sol",
        "file": "../common/Petrifiable.sol",
        "id": 10258,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 8823,
        "src": "243:35:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 10259,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 9067,
        "src": "279:40:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
        "file": "../factory/AppProxyFactory.sol",
        "id": 10260,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 9891,
        "src": "320:40:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10261,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10248,
              "src": "418:7:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$10248",
                "typeString": "contract IKernel"
              }
            },
            "id": 10262,
            "nodeType": "InheritanceSpecifier",
            "src": "418:7:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10263,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10840,
              "src": "427:13:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$10840",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 10264,
            "nodeType": "InheritanceSpecifier",
            "src": "427:13:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10265,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10759,
              "src": "442:12:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$10759",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 10266,
            "nodeType": "InheritanceSpecifier",
            "src": "442:12:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10267,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10769,
              "src": "456:24:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$10769",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 10268,
            "nodeType": "InheritanceSpecifier",
            "src": "456:24:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10269,
              "name": "Petrifiable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8822,
              "src": "482:11:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Petrifiable_$8822",
                "typeString": "contract Petrifiable"
              }
            },
            "id": 10270,
            "nodeType": "InheritanceSpecifier",
            "src": "482:11:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10271,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8789,
              "src": "495:10:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$8789",
                "typeString": "contract IsContract"
              }
            },
            "id": 10272,
            "nodeType": "InheritanceSpecifier",
            "src": "495:10:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10273,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9066,
              "src": "507:16:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$9066",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 10274,
            "nodeType": "InheritanceSpecifier",
            "src": "507:16:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10275,
              "name": "AppProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9890,
              "src": "525:15:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppProxyFactory_$9890",
                "typeString": "contract AppProxyFactory"
              }
            },
            "id": 10276,
            "nodeType": "InheritanceSpecifier",
            "src": "525:15:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10277,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7585,
              "src": "542:14:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$7585",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 10278,
            "nodeType": "InheritanceSpecifier",
            "src": "542:14:44"
          }
        ],
        "contractDependencies": [
          7585,
          8621,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9890,
          10248,
          10759,
          10769,
          10840
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10747,
        "linearizedBaseContracts": [
          10747,
          7585,
          9890,
          9066,
          8789,
          8621,
          8822,
          8761,
          8869,
          10769,
          10759,
          10840,
          10248,
          8663
        ],
        "name": "Kernel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 10281,
            "name": "APP_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "687:109:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 10279,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "687:7:44",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307862366439323730386633643438313761666331303631343764393639653232396365643563343665363565306135303032613064333931323837373632626430",
              "id": 10280,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "730:66:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_82704613664676796936649533353167530996754393993849268174999512363230727384016_by_1",
                "typeString": "int_const 8270...(69 digits omitted)...4016"
              },
              "value": "0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 10284,
            "name": "ERROR_APP_NOT_CONTRACT",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "803:74:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 10282,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "803:6:44",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f4150505f4e4f545f434f4e5452414354",
              "id": 10283,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "852:25:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9836ab188560c8863264933b2423feee77bc53fbabf48ddf22703b0c91862812",
                "typeString": "literal_string \"KERNEL_APP_NOT_CONTRACT\""
              },
              "value": "KERNEL_APP_NOT_CONTRACT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 10287,
            "name": "ERROR_INVALID_APP_CHANGE",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "883:78:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 10285,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "883:6:44",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f494e56414c49445f4150505f4348414e4745",
              "id": 10286,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "934:27:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e4acfdbe2a685f787d10384f7152f5de5d8b0224aa0b8e04fb5d376ed2b3e513",
                "typeString": "literal_string \"KERNEL_INVALID_APP_CHANGE\""
              },
              "value": "KERNEL_INVALID_APP_CHANGE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 10290,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "967:64:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 10288,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "967:6:44",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f415554485f4641494c4544",
              "id": 10289,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1011:20:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2f44e6c32cf650dbae4931fdeafb7f4804fc17f8169bd4fb754968e09d978601",
                "typeString": "literal_string \"KERNEL_AUTH_FAILED\""
              },
              "value": "KERNEL_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 10301,
              "nodeType": "Block",
              "src": "1303:70:44",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10295,
                    "name": "_shouldPetrify",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10292,
                    "src": "1317:14:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10300,
                  "nodeType": "IfStatement",
                  "src": "1313:54:44",
                  "trueBody": {
                    "id": 10299,
                    "nodeType": "Block",
                    "src": "1333:34:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10296,
                            "name": "petrify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8821,
                            "src": "1347:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 10297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1347:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10298,
                        "nodeType": "ExpressionStatement",
                        "src": "1347:9:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n@param _shouldPetrify Immediately petrify this instance so that it can never be initialized",
            "id": 10302,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10292,
                  "name": "_shouldPetrify",
                  "nodeType": "VariableDeclaration",
                  "scope": 10302,
                  "src": "1275:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10291,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1274:21:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1303:0:44"
            },
            "scope": 10747,
            "src": "1263:110:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10345,
              "nodeType": "Block",
              "src": "1856:457:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10311,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "1866:11:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1866:13:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10313,
                  "nodeType": "ExpressionStatement",
                  "src": "1866:13:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10315,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "1922:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10316,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10755,
                        "src": "1950:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10317,
                        "name": "_baseAcl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10304,
                        "src": "1977:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 10314,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10675,
                      "src": "1914:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1914:72:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10319,
                  "nodeType": "ExpressionStatement",
                  "src": "1914:72:44"
                },
                {
                  "assignments": [
                    10321
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10321,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 10346,
                      "src": "2065:8:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10320,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7681,
                        "src": "2065:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10328,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10324,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12755,
                            "src": "2093:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10325,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10755,
                            "src": "2099:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 10323,
                          "name": "newAppProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            9808,
                            9839
                          ],
                          "referencedDeclaration": 9808,
                          "src": "2081:11:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$10248_$_t_bytes32_$returns$_t_contract$_AppProxyUpgradeable_$8285_$",
                            "typeString": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)"
                          }
                        },
                        "id": 10326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2081:44:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$8285",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$8285",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      ],
                      "id": 10322,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7681,
                      "src": "2076:4:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$7681_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 10327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2076:50:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2065:61:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10332,
                        "name": "_permissionsCreator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10306,
                        "src": "2151:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10329,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10321,
                        "src": "2136:3:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      },
                      "id": 10331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7667,
                      "src": "2136:14:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10333,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2136:35:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10334,
                  "nodeType": "ExpressionStatement",
                  "src": "2136:35:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10336,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "2189:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10337,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10755,
                        "src": "2216:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10338,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10321,
                        "src": "2243:3:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 10335,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10675,
                      "src": "2181:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2181:66:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10340,
                  "nodeType": "ExpressionStatement",
                  "src": "2181:66:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10341,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10839,
                      "src": "2258:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10342,
                      "name": "KERNEL_DEFAULT_VAULT_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10758,
                      "src": "2279:27:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2258:48:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 10344,
                  "nodeType": "ExpressionStatement",
                  "src": "2258:48:44"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initializes a kernel instance along with its ACL and sets `_permissionsCreator` as the entity that can create other permissions\n@param _baseAcl Address of base ACL app\n@param _permissionsCreator Entity that will be given permission over createPermission",
            "id": 10346,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 10309,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10308,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "1847:8:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1847:8:44"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10304,
                  "name": "_baseAcl",
                  "nodeType": "VariableDeclaration",
                  "scope": 10346,
                  "src": "1796:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$7681",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10303,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7681,
                    "src": "1796:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10306,
                  "name": "_permissionsCreator",
                  "nodeType": "VariableDeclaration",
                  "scope": 10346,
                  "src": "1811:27:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1811:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1795:44:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10310,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1856:0:44"
            },
            "scope": 10747,
            "src": "1776:537:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10372,
              "nodeType": "Block",
              "src": "2835:77:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10363,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10348,
                        "src": "2867:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10364,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10350,
                        "src": "2875:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2895:1:44",
                            "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": 10366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2885:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 10365,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2889:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 10368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2885:12:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2899:5:44",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10362,
                      "name": "newAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10373,
                        10417
                      ],
                      "referencedDeclaration": 10417,
                      "src": "2852:14:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$11872_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 10370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2852:53:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 10361,
                  "id": 10371,
                  "nodeType": "Return",
                  "src": "2845:60:44"
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 10373,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10353,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "2736:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10355,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "2758:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10356,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10348,
                        "src": "2786:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10354,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "2754:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2754:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10358,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10352,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "2731:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2731:63:44"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10348,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10373,
                  "src": "2674:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10347,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2674:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10350,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10373,
                  "src": "2690:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10349,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2690:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2673:34:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10360,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10373,
                  "src": "2812:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10359,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "2812:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2811:19:44"
            },
            "scope": 10747,
            "src": "2650:262:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10416,
              "nodeType": "Block",
              "src": "3925:446:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10394,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "3948:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10395,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10375,
                        "src": "3976:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10396,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10377,
                        "src": "3984:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10393,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10713,
                      "src": "3935:12:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3935:58:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10398,
                  "nodeType": "ExpressionStatement",
                  "src": "3935:58:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10399,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10391,
                      "src": "4003:8:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$11872",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10401,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12755,
                          "src": "4026:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10402,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10375,
                          "src": "4032:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10403,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10379,
                          "src": "4040:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 10400,
                        "name": "newAppProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          9808,
                          9839
                        ],
                        "referencedDeclaration": 9839,
                        "src": "4014:11:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$10248_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyUpgradeable_$8285_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyUpgradeable)"
                        }
                      },
                      "id": 10404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4014:45:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyUpgradeable_$8285",
                        "typeString": "contract AppProxyUpgradeable"
                      }
                    },
                    "src": "4003:56:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 10406,
                  "nodeType": "ExpressionStatement",
                  "src": "4003:56:44"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10407,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10381,
                    "src": "4276:11:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10415,
                  "nodeType": "IfStatement",
                  "src": "4272:93:44",
                  "trueBody": {
                    "id": 10414,
                    "nodeType": "Block",
                    "src": "4289:76:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10409,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10768,
                              "src": "4310:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10410,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10375,
                              "src": "4337:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10411,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10391,
                              "src": "4345:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 10408,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10511
                            ],
                            "referencedDeclaration": 10511,
                            "src": "4303:6:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 10412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4303:51:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10413,
                        "nodeType": "ExpressionStatement",
                        "src": "4303:51:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel and set its base\n     implementation if it was not already set\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 10417,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10384,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "3826:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10386,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "3848:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10387,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10375,
                        "src": "3876:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10385,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "3844:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3844:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10389,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10383,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "3821:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3821:63:44"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10375,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3720:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10374,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3720:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10377,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3736:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3736:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10379,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3754:24:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10378,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3754:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10381,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3780:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10380,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3780:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3719:78:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10391,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3902:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10390,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "3902:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3901:19:44"
            },
            "scope": 10747,
            "src": "3696:675:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10443,
              "nodeType": "Block",
              "src": "4911:83:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10434,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10419,
                        "src": "4949:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10435,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10421,
                        "src": "4957:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4977:1:44",
                            "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": 10437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "4967:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 10436,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "4971:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 10439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4967:12:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4981:5:44",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10433,
                      "name": "newPinnedAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10444,
                        10488
                      ],
                      "referencedDeclaration": 10488,
                      "src": "4928:20:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$11872_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 10441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4928:59:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 10432,
                  "id": 10442,
                  "nodeType": "Return",
                  "src": "4921:66:44"
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 10444,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10424,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "4812:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10426,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "4834:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10427,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10419,
                        "src": "4862:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10425,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "4830:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4830:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10429,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10423,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "4807:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4807:63:44"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10419,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10444,
                  "src": "4750:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10418,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4750:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10421,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10444,
                  "src": "4766:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10420,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4766:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4749:34:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10431,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10444,
                  "src": "4888:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10430,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "4888:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4887:19:44"
            },
            "scope": 10747,
            "src": "4720:274:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10487,
              "nodeType": "Block",
              "src": "6024:452:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10465,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "6047:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10466,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10446,
                        "src": "6075:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10467,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10448,
                        "src": "6083:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10464,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10713,
                      "src": "6034:12:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6034:58:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10469,
                  "nodeType": "ExpressionStatement",
                  "src": "6034:58:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10470,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10462,
                      "src": "6102:8:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$11872",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10472,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12755,
                          "src": "6131:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10473,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10446,
                          "src": "6137:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10474,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10450,
                          "src": "6145:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 10471,
                        "name": "newAppProxyPinned",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          9858,
                          9889
                        ],
                        "referencedDeclaration": 9889,
                        "src": "6113:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$10248_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyPinned_$8245_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyPinned)"
                        }
                      },
                      "id": 10475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6113:51:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyPinned_$8245",
                        "typeString": "contract AppProxyPinned"
                      }
                    },
                    "src": "6102:62:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 10477,
                  "nodeType": "ExpressionStatement",
                  "src": "6102:62:44"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10478,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10452,
                    "src": "6381:11:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10486,
                  "nodeType": "IfStatement",
                  "src": "6377:93:44",
                  "trueBody": {
                    "id": 10485,
                    "nodeType": "Block",
                    "src": "6394:76:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10480,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10768,
                              "src": "6415:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10481,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10446,
                              "src": "6442:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10482,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10462,
                              "src": "6450:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 10479,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10511
                            ],
                            "referencedDeclaration": 10511,
                            "src": "6408:6:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 10483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6408:51:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10484,
                        "nodeType": "ExpressionStatement",
                        "src": "6408:51:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel and set\n     its base implementation if it was not already set\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 10488,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10455,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "5925:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10457,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "5947:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10458,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10446,
                        "src": "5975:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10456,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "5943:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5943:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10460,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10454,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "5920:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5920:63:44"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10446,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5819:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10445,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5819:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10448,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5835:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10447,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5835:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10450,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5853:24:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10449,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5853:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10452,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5879:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10451,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5879:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5818:78:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10462,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "6001:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10461,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "6001:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6000:19:44"
            },
            "scope": 10747,
            "src": "5789:687:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10510,
              "nodeType": "Block",
              "src": "6982:50:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10505,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10490,
                        "src": "7000:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10506,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10492,
                        "src": "7012:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10507,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10494,
                        "src": "7020:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10504,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10675,
                      "src": "6992:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6992:33:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10509,
                  "nodeType": "ExpressionStatement",
                  "src": "6992:33:44"
                }
              ]
            },
            "documentation": "@dev Set the resolving address of an app instance or base implementation\n@notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@param _app Address of the app instance or base implementation\n@return ID of app",
            "id": 10511,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10497,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "6935:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10499,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10490,
                        "src": "6957:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10500,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10492,
                        "src": "6969:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10498,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "6953:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6953:23:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10502,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10496,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "6930:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6930:47:44"
              }
            ],
            "name": "setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10490,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10511,
                  "src": "6857:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10489,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6857:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10492,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10511,
                  "src": "6877:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10491,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6877:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10494,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 10511,
                  "src": "6893:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6893:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6856:50:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6982:0:44"
            },
            "scope": 10747,
            "src": "6841:191:44",
            "stateMutability": "nonpayable",
            "superFunction": 10238,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10527,
              "nodeType": "Block",
              "src": "7353:57:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10523,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10839,
                      "src": "7363:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10524,
                      "name": "_recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10513,
                      "src": "7384:19:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7363:40:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 10526,
                  "nodeType": "ExpressionStatement",
                  "src": "7363:40:44"
                }
              ]
            },
            "documentation": "@dev Set the default vault id for the escape hatch mechanism\n@param _recoveryVaultAppId Identifier of the recovery vault app",
            "id": 10528,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10516,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "7278:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10518,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "7300:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10519,
                        "name": "_recoveryVaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10513,
                        "src": "7327:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10517,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "7296:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7296:51:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10521,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10515,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "7273:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7273:75:44"
              }
            ],
            "name": "setRecoveryVaultAppId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10513,
                  "name": "_recoveryVaultAppId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10528,
                  "src": "7221:27:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10512,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7221:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7220:29:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7353:0:44"
            },
            "scope": 10747,
            "src": "7190:220:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10535,
              "nodeType": "Block",
              "src": "7629:33:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10533,
                    "name": "KERNEL_CORE_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10762,
                    "src": "7638:21:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10532,
                  "id": 10534,
                  "nodeType": "Return",
                  "src": "7631:28:44"
                }
              ]
            },
            "documentation": null,
            "id": 10536,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "CORE_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7594:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10531,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10536,
                  "src": "7620:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10530,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7620:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7619:9:44"
            },
            "scope": 10747,
            "src": "7571:91:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10543,
              "nodeType": "Block",
              "src": "7730:38:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10541,
                    "name": "KERNEL_APP_BASES_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10765,
                    "src": "7739:26:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10540,
                  "id": 10542,
                  "nodeType": "Return",
                  "src": "7732:33:44"
                }
              ]
            },
            "documentation": null,
            "id": 10544,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_BASES_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10537,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7695:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10539,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10544,
                  "src": "7721:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10538,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7721:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7720:9:44"
            },
            "scope": 10747,
            "src": "7667:101:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10551,
              "nodeType": "Block",
              "src": "7835:37:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10549,
                    "name": "KERNEL_APP_ADDR_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10768,
                    "src": "7844:25:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10548,
                  "id": 10550,
                  "nodeType": "Return",
                  "src": "7837:32:44"
                }
              ]
            },
            "documentation": null,
            "id": 10552,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_ADDR_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7800:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10547,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10552,
                  "src": "7826:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10546,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7826:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7825:9:44"
            },
            "scope": 10747,
            "src": "7773:99:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10559,
              "nodeType": "Block",
              "src": "7934:30:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10557,
                    "name": "KERNEL_CORE_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10752,
                    "src": "7943:18:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10556,
                  "id": 10558,
                  "nodeType": "Return",
                  "src": "7936:25:44"
                }
              ]
            },
            "documentation": null,
            "id": 10560,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "KERNEL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10553,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7899:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10555,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10560,
                  "src": "7925:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10554,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7925:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7924:9:44"
            },
            "scope": 10747,
            "src": "7877:87:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10567,
              "nodeType": "Block",
              "src": "8031:37:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10565,
                    "name": "KERNEL_DEFAULT_ACL_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10755,
                    "src": "8040:25:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10564,
                  "id": 10566,
                  "nodeType": "Return",
                  "src": "8033:32:44"
                }
              ]
            },
            "documentation": null,
            "id": 10568,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "DEFAULT_ACL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10561,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7996:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10563,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10568,
                  "src": "8022:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10562,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8022:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8021:9:44"
            },
            "scope": 10747,
            "src": "7969:99:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10583,
              "nodeType": "Block",
              "src": "8407:48:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10577,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10837,
                        "src": "8424:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 10579,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10578,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10570,
                        "src": "8429:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8424:16:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 10581,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10580,
                      "name": "_appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10572,
                      "src": "8441:6:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8424:24:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 10576,
                  "id": 10582,
                  "nodeType": "Return",
                  "src": "8417:31:44"
                }
              ]
            },
            "documentation": "@dev Get the address of an app instance or base implementation\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@return Address of the app",
            "id": 10584,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10570,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10584,
                  "src": "8341:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10569,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8341:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10572,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10584,
                  "src": "8361:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8361:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8340:36:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10575,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10584,
                  "src": "8398:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8398:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8397:9:44"
            },
            "scope": 10747,
            "src": "8325:130:44",
            "stateMutability": "view",
            "superFunction": 10247,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10595,
              "nodeType": "Block",
              "src": "8646:75:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10589,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10837,
                        "src": "8663:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 10591,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10590,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "8668:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8663:31:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 10593,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10592,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10839,
                      "src": "8695:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8663:51:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 10588,
                  "id": 10594,
                  "nodeType": "Return",
                  "src": "8656:58:44"
                }
              ]
            },
            "documentation": "@dev Get the address of the recovery Vault instance (to recover funds)\n@return Address of the Vault",
            "id": 10596,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10585,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8613:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10587,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10596,
                  "src": "8637:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10586,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8637:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8636:9:44"
            },
            "scope": 10747,
            "src": "8588:133:44",
            "stateMutability": "view",
            "superFunction": 9065,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10608,
              "nodeType": "Block",
              "src": "8843:90:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10603,
                            "name": "KERNEL_APP_ADDR_NAMESPACE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10768,
                            "src": "8872:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10604,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10755,
                            "src": "8899:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 10602,
                          "name": "getApp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            10584
                          ],
                          "referencedDeclaration": 10584,
                          "src": "8865:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,bytes32) view returns (address)"
                          }
                        },
                        "id": 10605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8865:60:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10601,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7681,
                      "src": "8860:4:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$7681_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 10606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8860:66:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "functionReturnParameters": 10600,
                  "id": 10607,
                  "nodeType": "Return",
                  "src": "8853:73:44"
                }
              ]
            },
            "documentation": "@dev Get the installed ACL app\n@return ACL app",
            "id": 10609,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "acl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10597,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8813:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10599,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10609,
                  "src": "8837:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$7681",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10598,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7681,
                    "src": "8837:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8836:6:44"
            },
            "scope": 10747,
            "src": "8801:132:44",
            "stateMutability": "view",
            "superFunction": 10216,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10643,
              "nodeType": "Block",
              "src": "9487:204:44",
              "statements": [
                {
                  "assignments": [
                    10623
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10623,
                      "name": "defaultAcl",
                      "nodeType": "VariableDeclaration",
                      "scope": 10644,
                      "src": "9497:15:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10622,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7681,
                        "src": "9497:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10626,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10624,
                      "name": "acl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10609
                      ],
                      "referencedDeclaration": 10609,
                      "src": "9515:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IACL_$7681_$",
                        "typeString": "function () view returns (contract IACL)"
                      }
                    },
                    "id": 10625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9515:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9497:23:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 10633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10628,
                            "name": "defaultAcl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10623,
                            "src": "9545:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IACL_$7681",
                              "typeString": "contract IACL"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IACL_$7681",
                              "typeString": "contract IACL"
                            }
                          ],
                          "id": 10627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9537:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9537:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9568:1:44",
                            "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": 10630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9560:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9560:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "9537:33:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10636,
                          "name": "_who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10611,
                          "src": "9658:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10637,
                          "name": "_where",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10613,
                          "src": "9664:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10638,
                          "name": "_what",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10615,
                          "src": "9672:5:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10639,
                          "name": "_how",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10617,
                          "src": "9679:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10634,
                          "name": "defaultAcl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10623,
                          "src": "9633:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IACL_$7681",
                            "typeString": "contract IACL"
                          }
                        },
                        "id": 10635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasPermission",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7680,
                        "src": "9633:24:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 10640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9633:51:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9537:147:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10621,
                  "id": 10642,
                  "nodeType": "Return",
                  "src": "9530:154:44"
                }
              ]
            },
            "documentation": "@dev Function called by apps to check ACL on kernel or to check permission status\n@param _who Sender of the original call\n@param _where Address of the app\n@param _what Identifier for a group of actions in app\n@param _how Extra data for ACL auth\n@return Boolean indicating whether the ACL allows the role or not.\n        Always returns false if the kernel hasn't been initialized yet.",
            "id": 10644,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hasPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10611,
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9403:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9403:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10613,
                  "name": "_where",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9417:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10612,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9417:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10615,
                  "name": "_what",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9433:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10614,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9433:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10617,
                  "name": "_how",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9448:10:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10616,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9448:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9402:57:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10620,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9481:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10619,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9481:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9480:6:44"
            },
            "scope": 10747,
            "src": "9380:311:44",
            "stateMutability": "view",
            "superFunction": 10229,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10674,
              "nodeType": "Block",
              "src": "9773:154:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10655,
                            "name": "_app",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10650,
                            "src": "9802:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10654,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8788,
                          "src": "9791:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9791:16:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10657,
                        "name": "ERROR_APP_NOT_CONTRACT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10284,
                        "src": "9809:22:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 10653,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "9783:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9783:49:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10659,
                  "nodeType": "ExpressionStatement",
                  "src": "9783:49:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10660,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10837,
                          "src": "9842:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 10663,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10661,
                          "name": "_namespace",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10646,
                          "src": "9847:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9842:16:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 10664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10662,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10648,
                        "src": "9859:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9842:24:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10665,
                      "name": "_app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10650,
                      "src": "9869:4:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9842:31:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 10667,
                  "nodeType": "ExpressionStatement",
                  "src": "9842:31:44"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10669,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10646,
                        "src": "9895:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10670,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10648,
                        "src": "9907:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10671,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10650,
                        "src": "9915:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10668,
                      "name": "SetApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10211,
                      "src": "9888:6:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9888:32:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10673,
                  "nodeType": "EmitStatement",
                  "src": "9883:37:44"
                }
              ]
            },
            "documentation": null,
            "id": 10675,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10646,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "9714:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10645,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9714:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10648,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "9734:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10647,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9734:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10650,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "9750:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10649,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9750:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9713:50:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10652,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9773:0:44"
            },
            "scope": 10747,
            "src": "9697:230:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10712,
              "nodeType": "Block",
              "src": "10014:333:44",
              "statements": [
                {
                  "assignments": [
                    10685
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10685,
                      "name": "app",
                      "nodeType": "VariableDeclaration",
                      "scope": 10713,
                      "src": "10024:11:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10684,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10024:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10690,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10687,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10677,
                        "src": "10045:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10688,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10679,
                        "src": "10057:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10686,
                      "name": "getApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10584
                      ],
                      "referencedDeclaration": 10584,
                      "src": "10038:6:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view returns (address)"
                      }
                    },
                    "id": 10689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10038:26:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10024:40:44"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 10695,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10691,
                      "name": "app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10685,
                      "src": "10078:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10093:1:44",
                          "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": 10692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10085:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 10694,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10085:10:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10078:17:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10710,
                    "nodeType": "Block",
                    "src": "10283:58:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10705,
                              "name": "_namespace",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10677,
                              "src": "10305:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10706,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10679,
                              "src": "10317:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10707,
                              "name": "_app",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10681,
                              "src": "10325:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10704,
                            "name": "_setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10675,
                            "src": "10297:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 10708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10297:33:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10709,
                        "nodeType": "ExpressionStatement",
                        "src": "10297:33:44"
                      }
                    ]
                  },
                  "id": 10711,
                  "nodeType": "IfStatement",
                  "src": "10074:267:44",
                  "trueBody": {
                    "id": 10703,
                    "nodeType": "Block",
                    "src": "10097:180:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10697,
                                "name": "app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10685,
                                "src": "10228:3:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10698,
                                "name": "_app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10681,
                                "src": "10235:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10228:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10700,
                              "name": "ERROR_INVALID_APP_CHANGE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10287,
                              "src": "10241:24:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10696,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12673,
                              12674
                            ],
                            "referencedDeclaration": 12674,
                            "src": "10220:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10220:46:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10702,
                        "nodeType": "ExpressionStatement",
                        "src": "10220:46:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10713,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setAppIfNew",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10677,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10713,
                  "src": "9955:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10676,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9955:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10679,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10713,
                  "src": "9975:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10678,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9975:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10681,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 10713,
                  "src": "9991:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10680,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9991:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9954:50:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10683,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10014:0:44"
            },
            "scope": 10747,
            "src": "9933:414:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10745,
              "nodeType": "Block",
              "src": "10407:548:44",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10721,
                      "name": "how",
                      "nodeType": "VariableDeclaration",
                      "scope": 10746,
                      "src": "10690:16:44",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 10720,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10690:5:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10722,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10690:16:44"
                },
                {
                  "assignments": [
                    10724
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10724,
                      "name": "byteLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 10746,
                      "src": "10716:18:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10723,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10716:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10729,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10725,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10718,
                        "src": "10737:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 10726,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10737:13:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3332",
                      "id": 10727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10753:2:44",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "10737:18:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10716:39:44"
                },
                {
                  "externalReferences": [
                    {
                      "params": {
                        "declaration": 10718,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10795:6:44",
                        "valueSize": 1
                      }
                    },
                    {
                      "how": {
                        "declaration": 10721,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10788:3:44",
                        "valueSize": 1
                      }
                    },
                    {
                      "how": {
                        "declaration": 10721,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10821:3:44",
                        "valueSize": 1
                      }
                    },
                    {
                      "byteLength": {
                        "declaration": 10724,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10826:10:44",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 10730,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    how := params\n    mstore(how, byteLength)\n}",
                  "src": "10765:99:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10733,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12670,
                              "src": "10879:3:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10879:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10736,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12755,
                                "src": "10899:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Kernel_$10747",
                                  "typeString": "contract Kernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$10747",
                                  "typeString": "contract Kernel"
                                }
                              ],
                              "id": 10735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10891:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 10737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10891:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10738,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10715,
                            "src": "10906:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10739,
                            "name": "how",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10721,
                            "src": "10913:3:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 10732,
                          "name": "hasPermission",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            10644
                          ],
                          "referencedDeclaration": 10644,
                          "src": "10865:13:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes32,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 10740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10865:52:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10741,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10290,
                        "src": "10919:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 10731,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "10857:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10857:80:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10743,
                  "nodeType": "ExpressionStatement",
                  "src": "10857:80:44"
                },
                {
                  "id": 10744,
                  "nodeType": "PlaceholderStatement",
                  "src": "10947:1:44"
                }
              ]
            },
            "documentation": null,
            "id": 10746,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 10719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10715,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 10746,
                  "src": "10367:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10714,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10367:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10718,
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "scope": 10746,
                  "src": "10382:23:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10716,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10382:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10717,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10382:9:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10366:40:44"
            },
            "src": "10353:602:44",
            "visibility": "internal"
          }
        ],
        "scope": 10748,
        "src": "399:10558:44"
      }
    ],
    "src": "0:10958:44"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
    "exportedSymbols": {
      "Kernel": [
        10747
      ]
    },
    "id": 10748,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10250,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:44"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 10251,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 10249,
        "src": "25:23:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 10252,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 10770,
        "src": "49:31:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 10253,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 10841,
        "src": "81:29:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 10254,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 7682,
        "src": "111:25:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 10255,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 7661,
        "src": "137:35:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/misc/ERCProxy.sol",
        "file": "../lib/misc/ERCProxy.sol",
        "id": 10256,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 11873,
        "src": "173:34:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 10257,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 8790,
        "src": "208:34:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Petrifiable.sol",
        "file": "../common/Petrifiable.sol",
        "id": 10258,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 8823,
        "src": "243:35:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 10259,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 9067,
        "src": "279:40:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
        "file": "../factory/AppProxyFactory.sol",
        "id": 10260,
        "nodeType": "ImportDirective",
        "scope": 10748,
        "sourceUnit": 9891,
        "src": "320:40:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10261,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10248,
              "src": "418:7:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$10248",
                "typeString": "contract IKernel"
              }
            },
            "id": 10262,
            "nodeType": "InheritanceSpecifier",
            "src": "418:7:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10263,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10840,
              "src": "427:13:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$10840",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 10264,
            "nodeType": "InheritanceSpecifier",
            "src": "427:13:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10265,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10759,
              "src": "442:12:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$10759",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 10266,
            "nodeType": "InheritanceSpecifier",
            "src": "442:12:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10267,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10769,
              "src": "456:24:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$10769",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 10268,
            "nodeType": "InheritanceSpecifier",
            "src": "456:24:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10269,
              "name": "Petrifiable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8822,
              "src": "482:11:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Petrifiable_$8822",
                "typeString": "contract Petrifiable"
              }
            },
            "id": 10270,
            "nodeType": "InheritanceSpecifier",
            "src": "482:11:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10271,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8789,
              "src": "495:10:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$8789",
                "typeString": "contract IsContract"
              }
            },
            "id": 10272,
            "nodeType": "InheritanceSpecifier",
            "src": "495:10:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10273,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9066,
              "src": "507:16:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$9066",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 10274,
            "nodeType": "InheritanceSpecifier",
            "src": "507:16:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10275,
              "name": "AppProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9890,
              "src": "525:15:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppProxyFactory_$9890",
                "typeString": "contract AppProxyFactory"
              }
            },
            "id": 10276,
            "nodeType": "InheritanceSpecifier",
            "src": "525:15:44"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10277,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7585,
              "src": "542:14:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$7585",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 10278,
            "nodeType": "InheritanceSpecifier",
            "src": "542:14:44"
          }
        ],
        "contractDependencies": [
          7585,
          8621,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9890,
          10248,
          10759,
          10769,
          10840
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10747,
        "linearizedBaseContracts": [
          10747,
          7585,
          9890,
          9066,
          8789,
          8621,
          8822,
          8761,
          8869,
          10769,
          10759,
          10840,
          10248,
          8663
        ],
        "name": "Kernel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 10281,
            "name": "APP_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "687:109:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 10279,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "687:7:44",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307862366439323730386633643438313761666331303631343764393639653232396365643563343665363565306135303032613064333931323837373632626430",
              "id": 10280,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "730:66:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_82704613664676796936649533353167530996754393993849268174999512363230727384016_by_1",
                "typeString": "int_const 8270...(69 digits omitted)...4016"
              },
              "value": "0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 10284,
            "name": "ERROR_APP_NOT_CONTRACT",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "803:74:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 10282,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "803:6:44",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f4150505f4e4f545f434f4e5452414354",
              "id": 10283,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "852:25:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9836ab188560c8863264933b2423feee77bc53fbabf48ddf22703b0c91862812",
                "typeString": "literal_string \"KERNEL_APP_NOT_CONTRACT\""
              },
              "value": "KERNEL_APP_NOT_CONTRACT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 10287,
            "name": "ERROR_INVALID_APP_CHANGE",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "883:78:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 10285,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "883:6:44",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f494e56414c49445f4150505f4348414e4745",
              "id": 10286,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "934:27:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e4acfdbe2a685f787d10384f7152f5de5d8b0224aa0b8e04fb5d376ed2b3e513",
                "typeString": "literal_string \"KERNEL_INVALID_APP_CHANGE\""
              },
              "value": "KERNEL_INVALID_APP_CHANGE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 10290,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 10747,
            "src": "967:64:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 10288,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "967:6:44",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f415554485f4641494c4544",
              "id": 10289,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1011:20:44",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2f44e6c32cf650dbae4931fdeafb7f4804fc17f8169bd4fb754968e09d978601",
                "typeString": "literal_string \"KERNEL_AUTH_FAILED\""
              },
              "value": "KERNEL_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 10301,
              "nodeType": "Block",
              "src": "1303:70:44",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10295,
                    "name": "_shouldPetrify",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10292,
                    "src": "1317:14:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10300,
                  "nodeType": "IfStatement",
                  "src": "1313:54:44",
                  "trueBody": {
                    "id": 10299,
                    "nodeType": "Block",
                    "src": "1333:34:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10296,
                            "name": "petrify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8821,
                            "src": "1347:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 10297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1347:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10298,
                        "nodeType": "ExpressionStatement",
                        "src": "1347:9:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n@param _shouldPetrify Immediately petrify this instance so that it can never be initialized",
            "id": 10302,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10292,
                  "name": "_shouldPetrify",
                  "nodeType": "VariableDeclaration",
                  "scope": 10302,
                  "src": "1275:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10291,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1274:21:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1303:0:44"
            },
            "scope": 10747,
            "src": "1263:110:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10345,
              "nodeType": "Block",
              "src": "1856:457:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10311,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "1866:11:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 10312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1866:13:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10313,
                  "nodeType": "ExpressionStatement",
                  "src": "1866:13:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10315,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "1922:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10316,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10755,
                        "src": "1950:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10317,
                        "name": "_baseAcl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10304,
                        "src": "1977:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 10314,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10675,
                      "src": "1914:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1914:72:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10319,
                  "nodeType": "ExpressionStatement",
                  "src": "1914:72:44"
                },
                {
                  "assignments": [
                    10321
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10321,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 10346,
                      "src": "2065:8:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10320,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7681,
                        "src": "2065:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10328,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10324,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12755,
                            "src": "2093:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10325,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10755,
                            "src": "2099:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 10323,
                          "name": "newAppProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            9808,
                            9839
                          ],
                          "referencedDeclaration": 9808,
                          "src": "2081:11:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$10248_$_t_bytes32_$returns$_t_contract$_AppProxyUpgradeable_$8285_$",
                            "typeString": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)"
                          }
                        },
                        "id": 10326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2081:44:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$8285",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$8285",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      ],
                      "id": 10322,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7681,
                      "src": "2076:4:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$7681_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 10327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2076:50:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2065:61:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10332,
                        "name": "_permissionsCreator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10306,
                        "src": "2151:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10329,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10321,
                        "src": "2136:3:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      },
                      "id": 10331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7667,
                      "src": "2136:14:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10333,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2136:35:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10334,
                  "nodeType": "ExpressionStatement",
                  "src": "2136:35:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10336,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "2189:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10337,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10755,
                        "src": "2216:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10338,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10321,
                        "src": "2243:3:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 10335,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10675,
                      "src": "2181:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2181:66:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10340,
                  "nodeType": "ExpressionStatement",
                  "src": "2181:66:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10341,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10839,
                      "src": "2258:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10342,
                      "name": "KERNEL_DEFAULT_VAULT_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10758,
                      "src": "2279:27:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2258:48:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 10344,
                  "nodeType": "ExpressionStatement",
                  "src": "2258:48:44"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initializes a kernel instance along with its ACL and sets `_permissionsCreator` as the entity that can create other permissions\n@param _baseAcl Address of base ACL app\n@param _permissionsCreator Entity that will be given permission over createPermission",
            "id": 10346,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 10309,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10308,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "1847:8:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1847:8:44"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10304,
                  "name": "_baseAcl",
                  "nodeType": "VariableDeclaration",
                  "scope": 10346,
                  "src": "1796:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$7681",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10303,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7681,
                    "src": "1796:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10306,
                  "name": "_permissionsCreator",
                  "nodeType": "VariableDeclaration",
                  "scope": 10346,
                  "src": "1811:27:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1811:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1795:44:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10310,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1856:0:44"
            },
            "scope": 10747,
            "src": "1776:537:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10372,
              "nodeType": "Block",
              "src": "2835:77:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10363,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10348,
                        "src": "2867:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10364,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10350,
                        "src": "2875:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2895:1:44",
                            "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": 10366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2885:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 10365,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2889:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 10368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2885:12:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2899:5:44",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10362,
                      "name": "newAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10373,
                        10417
                      ],
                      "referencedDeclaration": 10417,
                      "src": "2852:14:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$11872_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 10370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2852:53:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 10361,
                  "id": 10371,
                  "nodeType": "Return",
                  "src": "2845:60:44"
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 10373,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10353,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "2736:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10355,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "2758:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10356,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10348,
                        "src": "2786:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10354,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "2754:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2754:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10358,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10352,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "2731:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2731:63:44"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10348,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10373,
                  "src": "2674:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10347,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2674:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10350,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10373,
                  "src": "2690:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10349,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2690:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2673:34:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10360,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10373,
                  "src": "2812:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10359,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "2812:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2811:19:44"
            },
            "scope": 10747,
            "src": "2650:262:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10416,
              "nodeType": "Block",
              "src": "3925:446:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10394,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "3948:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10395,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10375,
                        "src": "3976:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10396,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10377,
                        "src": "3984:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10393,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10713,
                      "src": "3935:12:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3935:58:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10398,
                  "nodeType": "ExpressionStatement",
                  "src": "3935:58:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10399,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10391,
                      "src": "4003:8:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$11872",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10401,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12755,
                          "src": "4026:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10402,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10375,
                          "src": "4032:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10403,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10379,
                          "src": "4040:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 10400,
                        "name": "newAppProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          9808,
                          9839
                        ],
                        "referencedDeclaration": 9839,
                        "src": "4014:11:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$10248_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyUpgradeable_$8285_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyUpgradeable)"
                        }
                      },
                      "id": 10404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4014:45:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyUpgradeable_$8285",
                        "typeString": "contract AppProxyUpgradeable"
                      }
                    },
                    "src": "4003:56:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 10406,
                  "nodeType": "ExpressionStatement",
                  "src": "4003:56:44"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10407,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10381,
                    "src": "4276:11:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10415,
                  "nodeType": "IfStatement",
                  "src": "4272:93:44",
                  "trueBody": {
                    "id": 10414,
                    "nodeType": "Block",
                    "src": "4289:76:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10409,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10768,
                              "src": "4310:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10410,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10375,
                              "src": "4337:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10411,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10391,
                              "src": "4345:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 10408,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10511
                            ],
                            "referencedDeclaration": 10511,
                            "src": "4303:6:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 10412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4303:51:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10413,
                        "nodeType": "ExpressionStatement",
                        "src": "4303:51:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel and set its base\n     implementation if it was not already set\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 10417,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10384,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "3826:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10386,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "3848:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10387,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10375,
                        "src": "3876:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10385,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "3844:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3844:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10389,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10383,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "3821:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3821:63:44"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10375,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3720:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10374,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3720:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10377,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3736:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3736:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10379,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3754:24:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10378,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3754:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10381,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3780:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10380,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3780:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3719:78:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10391,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10417,
                  "src": "3902:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10390,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "3902:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3901:19:44"
            },
            "scope": 10747,
            "src": "3696:675:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10443,
              "nodeType": "Block",
              "src": "4911:83:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10434,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10419,
                        "src": "4949:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10435,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10421,
                        "src": "4957:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4977:1:44",
                            "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": 10437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "4967:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 10436,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "4971:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 10439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4967:12:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 10440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4981:5:44",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10433,
                      "name": "newPinnedAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10444,
                        10488
                      ],
                      "referencedDeclaration": 10488,
                      "src": "4928:20:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$11872_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 10441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4928:59:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 10432,
                  "id": 10442,
                  "nodeType": "Return",
                  "src": "4921:66:44"
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 10444,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10424,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "4812:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10426,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "4834:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10427,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10419,
                        "src": "4862:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10425,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "4830:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4830:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10429,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10423,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "4807:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4807:63:44"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10419,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10444,
                  "src": "4750:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10418,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4750:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10421,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10444,
                  "src": "4766:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10420,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4766:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4749:34:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10431,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10444,
                  "src": "4888:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10430,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "4888:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4887:19:44"
            },
            "scope": 10747,
            "src": "4720:274:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10487,
              "nodeType": "Block",
              "src": "6024:452:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10465,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "6047:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10466,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10446,
                        "src": "6075:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10467,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10448,
                        "src": "6083:8:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10464,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10713,
                      "src": "6034:12:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6034:58:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10469,
                  "nodeType": "ExpressionStatement",
                  "src": "6034:58:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10470,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10462,
                      "src": "6102:8:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$11872",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10472,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12755,
                          "src": "6131:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10473,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10446,
                          "src": "6137:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10474,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10450,
                          "src": "6145:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$10747",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 10471,
                        "name": "newAppProxyPinned",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          9858,
                          9889
                        ],
                        "referencedDeclaration": 9889,
                        "src": "6113:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$10248_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyPinned_$8245_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyPinned)"
                        }
                      },
                      "id": 10475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6113:51:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyPinned_$8245",
                        "typeString": "contract AppProxyPinned"
                      }
                    },
                    "src": "6102:62:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 10477,
                  "nodeType": "ExpressionStatement",
                  "src": "6102:62:44"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10478,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10452,
                    "src": "6381:11:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10486,
                  "nodeType": "IfStatement",
                  "src": "6377:93:44",
                  "trueBody": {
                    "id": 10485,
                    "nodeType": "Block",
                    "src": "6394:76:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10480,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10768,
                              "src": "6415:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10481,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10446,
                              "src": "6442:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10482,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10462,
                              "src": "6450:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$11872",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 10479,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10511
                            ],
                            "referencedDeclaration": 10511,
                            "src": "6408:6:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 10483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6408:51:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10484,
                        "nodeType": "ExpressionStatement",
                        "src": "6408:51:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel and set\n     its base implementation if it was not already set\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 10488,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10455,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "5925:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10457,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10765,
                        "src": "5947:26:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10458,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10446,
                        "src": "5975:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10456,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "5943:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5943:39:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10460,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10454,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "5920:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5920:63:44"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10446,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5819:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10445,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5819:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10448,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5835:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10447,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5835:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10450,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5853:24:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10449,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5853:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10452,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "5879:16:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10451,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5879:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5818:78:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10462,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "6001:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$11872",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10461,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11872,
                    "src": "6001:8:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$11872",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6000:19:44"
            },
            "scope": 10747,
            "src": "5789:687:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10510,
              "nodeType": "Block",
              "src": "6982:50:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10505,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10490,
                        "src": "7000:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10506,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10492,
                        "src": "7012:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10507,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10494,
                        "src": "7020:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10504,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10675,
                      "src": "6992:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6992:33:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10509,
                  "nodeType": "ExpressionStatement",
                  "src": "6992:33:44"
                }
              ]
            },
            "documentation": "@dev Set the resolving address of an app instance or base implementation\n@notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@param _app Address of the app instance or base implementation\n@return ID of app",
            "id": 10511,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10497,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "6935:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10499,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10490,
                        "src": "6957:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10500,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10492,
                        "src": "6969:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10498,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "6953:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6953:23:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10502,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10496,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "6930:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6930:47:44"
              }
            ],
            "name": "setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10490,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10511,
                  "src": "6857:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10489,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6857:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10492,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10511,
                  "src": "6877:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10491,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6877:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10494,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 10511,
                  "src": "6893:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6893:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6856:50:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6982:0:44"
            },
            "scope": 10747,
            "src": "6841:191:44",
            "stateMutability": "nonpayable",
            "superFunction": 10238,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10527,
              "nodeType": "Block",
              "src": "7353:57:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10523,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10839,
                      "src": "7363:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10524,
                      "name": "_recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10513,
                      "src": "7384:19:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7363:40:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 10526,
                  "nodeType": "ExpressionStatement",
                  "src": "7363:40:44"
                }
              ]
            },
            "documentation": "@dev Set the default vault id for the escape hatch mechanism\n@param _recoveryVaultAppId Identifier of the recovery vault app",
            "id": 10528,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10516,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10281,
                    "src": "7278:16:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10518,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "7300:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10519,
                        "name": "_recoveryVaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10513,
                        "src": "7327:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10517,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7210,
                      "src": "7296:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 10520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7296:51:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 10521,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10515,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10746,
                  "src": "7273:4:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7273:75:44"
              }
            ],
            "name": "setRecoveryVaultAppId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10513,
                  "name": "_recoveryVaultAppId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10528,
                  "src": "7221:27:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10512,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7221:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7220:29:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7353:0:44"
            },
            "scope": 10747,
            "src": "7190:220:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10535,
              "nodeType": "Block",
              "src": "7629:33:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10533,
                    "name": "KERNEL_CORE_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10762,
                    "src": "7638:21:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10532,
                  "id": 10534,
                  "nodeType": "Return",
                  "src": "7631:28:44"
                }
              ]
            },
            "documentation": null,
            "id": 10536,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "CORE_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7594:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10531,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10536,
                  "src": "7620:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10530,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7620:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7619:9:44"
            },
            "scope": 10747,
            "src": "7571:91:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10543,
              "nodeType": "Block",
              "src": "7730:38:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10541,
                    "name": "KERNEL_APP_BASES_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10765,
                    "src": "7739:26:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10540,
                  "id": 10542,
                  "nodeType": "Return",
                  "src": "7732:33:44"
                }
              ]
            },
            "documentation": null,
            "id": 10544,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_BASES_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10537,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7695:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10539,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10544,
                  "src": "7721:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10538,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7721:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7720:9:44"
            },
            "scope": 10747,
            "src": "7667:101:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10551,
              "nodeType": "Block",
              "src": "7835:37:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10549,
                    "name": "KERNEL_APP_ADDR_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10768,
                    "src": "7844:25:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10548,
                  "id": 10550,
                  "nodeType": "Return",
                  "src": "7837:32:44"
                }
              ]
            },
            "documentation": null,
            "id": 10552,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_ADDR_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7800:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10547,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10552,
                  "src": "7826:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10546,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7826:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7825:9:44"
            },
            "scope": 10747,
            "src": "7773:99:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10559,
              "nodeType": "Block",
              "src": "7934:30:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10557,
                    "name": "KERNEL_CORE_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10752,
                    "src": "7943:18:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10556,
                  "id": 10558,
                  "nodeType": "Return",
                  "src": "7936:25:44"
                }
              ]
            },
            "documentation": null,
            "id": 10560,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "KERNEL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10553,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7899:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10555,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10560,
                  "src": "7925:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10554,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7925:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7924:9:44"
            },
            "scope": 10747,
            "src": "7877:87:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10567,
              "nodeType": "Block",
              "src": "8031:37:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10565,
                    "name": "KERNEL_DEFAULT_ACL_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10755,
                    "src": "8040:25:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 10564,
                  "id": 10566,
                  "nodeType": "Return",
                  "src": "8033:32:44"
                }
              ]
            },
            "documentation": null,
            "id": 10568,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "DEFAULT_ACL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10561,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7996:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10563,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10568,
                  "src": "8022:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10562,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8022:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8021:9:44"
            },
            "scope": 10747,
            "src": "7969:99:44",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10583,
              "nodeType": "Block",
              "src": "8407:48:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10577,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10837,
                        "src": "8424:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 10579,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10578,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10570,
                        "src": "8429:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8424:16:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 10581,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10580,
                      "name": "_appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10572,
                      "src": "8441:6:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8424:24:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 10576,
                  "id": 10582,
                  "nodeType": "Return",
                  "src": "8417:31:44"
                }
              ]
            },
            "documentation": "@dev Get the address of an app instance or base implementation\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@return Address of the app",
            "id": 10584,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10570,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10584,
                  "src": "8341:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10569,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8341:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10572,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10584,
                  "src": "8361:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8361:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8340:36:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10575,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10584,
                  "src": "8398:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8398:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8397:9:44"
            },
            "scope": 10747,
            "src": "8325:130:44",
            "stateMutability": "view",
            "superFunction": 10247,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10595,
              "nodeType": "Block",
              "src": "8646:75:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10589,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10837,
                        "src": "8663:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 10591,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10590,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "8668:25:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8663:31:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 10593,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10592,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10839,
                      "src": "8695:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8663:51:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 10588,
                  "id": 10594,
                  "nodeType": "Return",
                  "src": "8656:58:44"
                }
              ]
            },
            "documentation": "@dev Get the address of the recovery Vault instance (to recover funds)\n@return Address of the Vault",
            "id": 10596,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10585,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8613:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10587,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10596,
                  "src": "8637:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10586,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8637:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8636:9:44"
            },
            "scope": 10747,
            "src": "8588:133:44",
            "stateMutability": "view",
            "superFunction": 9065,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10608,
              "nodeType": "Block",
              "src": "8843:90:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10603,
                            "name": "KERNEL_APP_ADDR_NAMESPACE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10768,
                            "src": "8872:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10604,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10755,
                            "src": "8899:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 10602,
                          "name": "getApp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            10584
                          ],
                          "referencedDeclaration": 10584,
                          "src": "8865:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,bytes32) view returns (address)"
                          }
                        },
                        "id": 10605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8865:60:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10601,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7681,
                      "src": "8860:4:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$7681_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 10606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8860:66:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "functionReturnParameters": 10600,
                  "id": 10607,
                  "nodeType": "Return",
                  "src": "8853:73:44"
                }
              ]
            },
            "documentation": "@dev Get the installed ACL app\n@return ACL app",
            "id": 10609,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "acl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10597,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8813:2:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10599,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10609,
                  "src": "8837:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$7681",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10598,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7681,
                    "src": "8837:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8836:6:44"
            },
            "scope": 10747,
            "src": "8801:132:44",
            "stateMutability": "view",
            "superFunction": 10216,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10643,
              "nodeType": "Block",
              "src": "9487:204:44",
              "statements": [
                {
                  "assignments": [
                    10623
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10623,
                      "name": "defaultAcl",
                      "nodeType": "VariableDeclaration",
                      "scope": 10644,
                      "src": "9497:15:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10622,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7681,
                        "src": "9497:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$7681",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10626,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 10624,
                      "name": "acl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10609
                      ],
                      "referencedDeclaration": 10609,
                      "src": "9515:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IACL_$7681_$",
                        "typeString": "function () view returns (contract IACL)"
                      }
                    },
                    "id": 10625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9515:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9497:23:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 10633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10628,
                            "name": "defaultAcl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10623,
                            "src": "9545:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IACL_$7681",
                              "typeString": "contract IACL"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IACL_$7681",
                              "typeString": "contract IACL"
                            }
                          ],
                          "id": 10627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9537:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9537:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9568:1:44",
                            "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": 10630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9560:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9560:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "9537:33:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10636,
                          "name": "_who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10611,
                          "src": "9658:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10637,
                          "name": "_where",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10613,
                          "src": "9664:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10638,
                          "name": "_what",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10615,
                          "src": "9672:5:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10639,
                          "name": "_how",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10617,
                          "src": "9679:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10634,
                          "name": "defaultAcl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10623,
                          "src": "9633:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IACL_$7681",
                            "typeString": "contract IACL"
                          }
                        },
                        "id": 10635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasPermission",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7680,
                        "src": "9633:24:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 10640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9633:51:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9537:147:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10621,
                  "id": 10642,
                  "nodeType": "Return",
                  "src": "9530:154:44"
                }
              ]
            },
            "documentation": "@dev Function called by apps to check ACL on kernel or to check permission status\n@param _who Sender of the original call\n@param _where Address of the app\n@param _what Identifier for a group of actions in app\n@param _how Extra data for ACL auth\n@return Boolean indicating whether the ACL allows the role or not.\n        Always returns false if the kernel hasn't been initialized yet.",
            "id": 10644,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hasPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10611,
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9403:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9403:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10613,
                  "name": "_where",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9417:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10612,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9417:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10615,
                  "name": "_what",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9433:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10614,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9433:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10617,
                  "name": "_how",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9448:10:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10616,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9448:5:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9402:57:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10620,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10644,
                  "src": "9481:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10619,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9481:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9480:6:44"
            },
            "scope": 10747,
            "src": "9380:311:44",
            "stateMutability": "view",
            "superFunction": 10229,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10674,
              "nodeType": "Block",
              "src": "9773:154:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10655,
                            "name": "_app",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10650,
                            "src": "9802:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10654,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8788,
                          "src": "9791:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9791:16:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10657,
                        "name": "ERROR_APP_NOT_CONTRACT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10284,
                        "src": "9809:22:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 10653,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "9783:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9783:49:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10659,
                  "nodeType": "ExpressionStatement",
                  "src": "9783:49:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10660,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10837,
                          "src": "9842:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 10663,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10661,
                          "name": "_namespace",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10646,
                          "src": "9847:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9842:16:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 10664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10662,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10648,
                        "src": "9859:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9842:24:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10665,
                      "name": "_app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10650,
                      "src": "9869:4:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9842:31:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 10667,
                  "nodeType": "ExpressionStatement",
                  "src": "9842:31:44"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10669,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10646,
                        "src": "9895:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10670,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10648,
                        "src": "9907:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10671,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10650,
                        "src": "9915:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10668,
                      "name": "SetApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10211,
                      "src": "9888:6:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 10672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9888:32:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10673,
                  "nodeType": "EmitStatement",
                  "src": "9883:37:44"
                }
              ]
            },
            "documentation": null,
            "id": 10675,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10646,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "9714:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10645,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9714:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10648,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "9734:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10647,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9734:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10650,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "9750:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10649,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9750:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9713:50:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10652,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9773:0:44"
            },
            "scope": 10747,
            "src": "9697:230:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10712,
              "nodeType": "Block",
              "src": "10014:333:44",
              "statements": [
                {
                  "assignments": [
                    10685
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10685,
                      "name": "app",
                      "nodeType": "VariableDeclaration",
                      "scope": 10713,
                      "src": "10024:11:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10684,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10024:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10690,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10687,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10677,
                        "src": "10045:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10688,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10679,
                        "src": "10057:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10686,
                      "name": "getApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10584
                      ],
                      "referencedDeclaration": 10584,
                      "src": "10038:6:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view returns (address)"
                      }
                    },
                    "id": 10689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10038:26:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10024:40:44"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 10695,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10691,
                      "name": "app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10685,
                      "src": "10078:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10093:1:44",
                          "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": 10692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10085:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 10694,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10085:10:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10078:17:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10710,
                    "nodeType": "Block",
                    "src": "10283:58:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10705,
                              "name": "_namespace",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10677,
                              "src": "10305:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10706,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10679,
                              "src": "10317:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10707,
                              "name": "_app",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10681,
                              "src": "10325:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10704,
                            "name": "_setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10675,
                            "src": "10297:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 10708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10297:33:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10709,
                        "nodeType": "ExpressionStatement",
                        "src": "10297:33:44"
                      }
                    ]
                  },
                  "id": 10711,
                  "nodeType": "IfStatement",
                  "src": "10074:267:44",
                  "trueBody": {
                    "id": 10703,
                    "nodeType": "Block",
                    "src": "10097:180:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10697,
                                "name": "app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10685,
                                "src": "10228:3:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10698,
                                "name": "_app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10681,
                                "src": "10235:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10228:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10700,
                              "name": "ERROR_INVALID_APP_CHANGE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10287,
                              "src": "10241:24:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10696,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12673,
                              12674
                            ],
                            "referencedDeclaration": 12674,
                            "src": "10220:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10220:46:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10702,
                        "nodeType": "ExpressionStatement",
                        "src": "10220:46:44"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10713,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setAppIfNew",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10677,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 10713,
                  "src": "9955:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10676,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9955:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10679,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10713,
                  "src": "9975:14:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10678,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9975:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10681,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 10713,
                  "src": "9991:12:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10680,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9991:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9954:50:44"
            },
            "payable": false,
            "returnParameters": {
              "id": 10683,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10014:0:44"
            },
            "scope": 10747,
            "src": "9933:414:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10745,
              "nodeType": "Block",
              "src": "10407:548:44",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10721,
                      "name": "how",
                      "nodeType": "VariableDeclaration",
                      "scope": 10746,
                      "src": "10690:16:44",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 10720,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10690:5:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10722,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10690:16:44"
                },
                {
                  "assignments": [
                    10724
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10724,
                      "name": "byteLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 10746,
                      "src": "10716:18:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10723,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10716:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10729,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10725,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10718,
                        "src": "10737:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 10726,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10737:13:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3332",
                      "id": 10727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10753:2:44",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "10737:18:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10716:39:44"
                },
                {
                  "externalReferences": [
                    {
                      "params": {
                        "declaration": 10718,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10795:6:44",
                        "valueSize": 1
                      }
                    },
                    {
                      "how": {
                        "declaration": 10721,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10788:3:44",
                        "valueSize": 1
                      }
                    },
                    {
                      "how": {
                        "declaration": 10721,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10821:3:44",
                        "valueSize": 1
                      }
                    },
                    {
                      "byteLength": {
                        "declaration": 10724,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "10826:10:44",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 10730,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    how := params\n    mstore(how, byteLength)\n}",
                  "src": "10765:99:44"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10733,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12670,
                              "src": "10879:3:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10879:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10736,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12755,
                                "src": "10899:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Kernel_$10747",
                                  "typeString": "contract Kernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$10747",
                                  "typeString": "contract Kernel"
                                }
                              ],
                              "id": 10735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10891:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 10737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10891:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10738,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10715,
                            "src": "10906:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10739,
                            "name": "how",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10721,
                            "src": "10913:3:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 10732,
                          "name": "hasPermission",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            10644
                          ],
                          "referencedDeclaration": 10644,
                          "src": "10865:13:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes32,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 10740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10865:52:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10741,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10290,
                        "src": "10919:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 10731,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "10857:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10857:80:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10743,
                  "nodeType": "ExpressionStatement",
                  "src": "10857:80:44"
                },
                {
                  "id": 10744,
                  "nodeType": "PlaceholderStatement",
                  "src": "10947:1:44"
                }
              ]
            },
            "documentation": null,
            "id": 10746,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 10719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10715,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 10746,
                  "src": "10367:13:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10714,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10367:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10718,
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "scope": 10746,
                  "src": "10382:23:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10716,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10382:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10717,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10382:9:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10366:40:44"
            },
            "src": "10353:602:44",
            "visibility": "internal"
          }
        ],
        "scope": 10748,
        "src": "399:10558:44"
      }
    ],
    "src": "0:10958:44"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.521Z",
  "devdoc": {
    "methods": {
      "acl()": {
        "details": "Get the installed ACL app",
        "return": "ACL app"
      },
      "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"
      },
      "getApp(bytes32,bytes32)": {
        "details": "Get the address of an app instance or base implementation",
        "params": {
          "_appId": "Identifier for app",
          "_namespace": "App namespace to use"
        },
        "return": "Address of the app"
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the address of the recovery Vault instance (to recover funds)",
        "return": "Address of the Vault"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "hasPermission(address,address,bytes32,bytes)": {
        "details": "Function called by apps to check ACL on kernel or to check permission status",
        "params": {
          "_how": "Extra data for ACL auth",
          "_what": "Identifier for a group of actions in app",
          "_where": "Address of the app",
          "_who": "Sender of the original call"
        },
        "return": "Boolean indicating whether the ACL allows the role or not.        Always returns false if the kernel hasn't been initialized yet."
      },
      "initialize(address,address)": {
        "details": "Initialize can only be called once. It saves the block number in which it was initialized.",
        "params": {
          "_baseAcl": "Address of base ACL app",
          "_permissionsCreator": "Entity that will be given permission over createPermission"
        }
      },
      "newAppInstance(bytes32,address)": {
        "details": "Create a new instance of an app linked to this kernel",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app"
        },
        "return": "AppProxy instance"
      },
      "newAppInstance(bytes32,address,bytes,bool)": {
        "details": "Create a new instance of an app linked to this kernel and set its base     implementation if it was not already set",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app",
          "_initializePayload": "Payload for call made by the proxy during its construction to initialize",
          "_setDefault": "Whether the app proxy app is the default one.       Useful when the Kernel needs to know of an instance of a particular app,       like Vault for escape hatch mechanism."
        },
        "return": "AppProxy instance"
      },
      "newPinnedAppInstance(bytes32,address)": {
        "details": "Create a new pinned instance of an app linked to this kernel",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app"
        },
        "return": "AppProxy instance"
      },
      "newPinnedAppInstance(bytes32,address,bytes,bool)": {
        "details": "Create a new pinned instance of an app linked to this kernel and set     its base implementation if it was not already set",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app",
          "_initializePayload": "Payload for call made by the proxy during its construction to initialize",
          "_setDefault": "Whether the app proxy app is the default one.       Useful when the Kernel needs to know of an instance of a particular app,       like Vault for escape hatch mechanism."
        },
        "return": "AppProxy instance"
      },
      "setApp(bytes32,bytes32,address)": {
        "details": "Set the resolving address of an app instance or base implementation",
        "params": {
          "_app": "Address of the app instance or base implementation",
          "_appId": "Identifier for app",
          "_namespace": "App namespace to use"
        },
        "return": "ID of app"
      },
      "setRecoveryVaultAppId(bytes32)": {
        "details": "Set the default vault id for the escape hatch mechanism",
        "params": {
          "_recoveryVaultAppId": "Identifier of the recovery vault app"
        }
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "initialize(address,address)": {
        "notice": "Initializes a kernel instance along with its ACL and sets `_permissionsCreator` as the entity that can create other permissions"
      },
      "newAppInstance(bytes32,address)": {
        "notice": "Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`"
      },
      "newAppInstance(bytes32,address,bytes,bool)": {
        "notice": "Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`"
      },
      "newPinnedAppInstance(bytes32,address)": {
        "notice": "Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`."
      },
      "newPinnedAppInstance(bytes32,address,bytes,bool)": {
        "notice": "Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`"
      },
      "setApp(bytes32,bytes32,address)": {
        "notice": "Set the resolving address of `_appId` in namespace `_namespace` to `_app`"
      },
      "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."
      }
    }
  }
}