{
  "contractName": "RevocationRegistry",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "RevocationListCreate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "RevokedStatusUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "WalletAdded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "registry",
      "outputs": [
        {
          "internalType": "bool",
          "name": "walletInRegistry",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "totalLists",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_permissions",
          "type": "address"
        }
      ],
      "name": "setPermissionsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPermissionsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "isWalletExist",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        }
      ],
      "name": "isListExist",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "addWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "addWalletSigned",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "addRevocationList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "addRevocationListSigned",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "setRevokedStatus",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "setRevokedStatusSigned",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        }
      ],
      "name": "getRevokedStatus",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "revokedStatus",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRevocationListCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"RevocationListCreate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"RevokedStatusUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"WalletAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"addRevocationList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"addRevocationListSigned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"addWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"addWalletSigned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPermissionsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRevocationListCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getRevokedStatus\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"revokedStatus\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"}],\"name\":\"isListExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"}],\"name\":\"isWalletExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"walletInRegistry\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalLists\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permissions\",\"type\":\"address\"}],\"name\":\"setPermissionsAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"setRevokedStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setRevokedStatusSigned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/RevocationRegistry.sol\":\"RevocationRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@verii/permissions-contract/contracts/Permissions.sol\":{\"keccak256\":\"0xfeb567393dc20917e657c98e7eab14b8b4bde172e097c9da99d9d504f406218b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d2bb20d59a6ac1b5e56afcec46a9ae3bb2e77afd20cce0d21af2b1f92eb2416\",\"dweb:/ipfs/QmXT8TNUmSk912otnG9hme8df8ZPZBfY1nq9BWjFtfZKpY\"]},\"@verii/signature-verification-library/libraries/SignatureVerification.sol\":{\"keccak256\":\"0xd7dda8d7b594b5195947ed0f1b897dba63d154b8339ec0a89e6311502312ac15\",\"urls\":[\"bzz-raw://d319754f27ed4813441af4c62afe635a0d734209f6558a9a2c54faf2d95bebfa\",\"dweb:/ipfs/QmRSku9PgnJr8V3gjQM68D74K32ULZSjpU5fonBy5L1MA9\"]},\"project:/contracts/RevocationRegistry.sol\":{\"keccak256\":\"0x2db68466819dc479e6c74620497d3f931f2f7f7817998b864afdf2458d6a2deb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b248283bce560433351c22234707979b96ba9ab6847c181490e63e75bb132cb\",\"dweb:/ipfs/QmQoLMZQ5rmKs7KvkrkFcy4N1c2bagUpTrhf1MVE6HaznU\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50611722806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806393d630f01161008c578063cb7dfa2211610066578063cb7dfa2214610204578063f4aa03cb1461021a578063f97cbecd1461022d578063fb5e3c251461024057600080fd5b806393d630f0146101b1578063a3b3cfbc146101d6578063c86cb67a146101f157600080fd5b8063318c6af9116100c8578063318c6af9146101705780634d5fff6d146101835780638129fc1c14610196578063872bf91c1461019e57600080fd5b8063038defd7146100ef57806306295354146101385780630b3738ac1461014d575b600080fd5b61011c6100fd36600461116e565b6001602081905260009182526040909120805491015460ff9091169082565b6040805192151583526020830191909152015b60405180910390f35b61014b6101463660046113fb565b610253565b005b61016061015b3660046111ad565b610292565b604051901515815260200161012f565b61014b61017e366004611276565b6102c1565b61014b6101913660046113ba565b6102eb565b61014b6102f8565b61014b6101ac36600461132c565b610406565b6101c46101bf3660046111d8565b610432565b60405160ff909116815260200161012f565b6002546040516001600160a01b03909116815260200161012f565b61014b6101ff3660046112fa565b61056b565b61020c61057c565b60405190815260200161012f565b61014b610228366004611215565b6106c5565b61016061023b36600461116e565b6106d4565b61014b61024e36600461116e565b6106f2565b6040805133602082015260009161027b91015b6040516020818303038152906040528361080e565b905061028a8686868685610897565b505050505050565b6001600160a01b0391909116600090815260016020908152604080832093835260029093019052205460ff1690565b604080513360208201526000916102d89101610266565b90506102e5848483610b70565b50505050565b6102e58484848433610897565b600054610100900460ff16158080156103185750600054600160ff909116105b806103325750303b158015610332575060005460ff166001145b61039a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156103bd576000805461ff0019166101001790555b8015610403576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6040805133602082015260009161041d9101610266565b905061042b85858584610caf565b5050505050565b60006128008263ffffffff16106104855760405162461bcd60e51b81526020600482015260176024820152761b1a5cdd081a5b99195e081bdd5d081bd988189bdd5b99604a1b6044820152606401610391565b61048e846106d4565b6104aa5760405162461bcd60e51b8152600401610391906115fa565b6104b48484610292565b6104d05760405162461bcd60e51b8152600401610391906115ae565b6000806104df84610100610f53565b6001600160a01b03881660009081526001602081815260408084208b85526003019091528220805494965092945063ffffffff8086169190911b93919284929091871690811061053f57634e487b7160e01b600052603260045260246000fd5b906000526020600020015416905061055f8363ffffffff1682901c610f9e565b98975050505050505050565b61057783838333610caf565b505050565b60025460405163de1ac2fd60e01b81523360048201819052600092909183916001600160a01b03169063de1ac2fd9060240160206040518083038186803b1580156105c657600080fd5b505afa1580156105da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fe9190611191565b9050610609816106d4565b6106255760405162461bcd60e51b8152600401610391906115fa565b60025460405163de1ac2fd60e01b81523360048201526000916001600160a01b03169063de1ac2fd9060240160206040518083038186803b15801561066957600080fd5b505afa15801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190611191565b6001600160a01b031660009081526001602081905260409091200154935050505090565b6106d0828233610b70565b5050565b6001600160a01b031660009081526001602052604090205460ff1690565b6002546001600160a01b031615806107a05750600260009054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b15801561075357600080fd5b505afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190611191565b6001600160a01b0316336001600160a01b0316145b6107ec5760405162461bcd60e51b815260206004820152601e60248201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e4600006044820152606401610391565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b81516020830120600090600080600061082686611003565b60408051600081526020810180835289905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015610881573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b60025460405163de1ac2fd60e01b81526001600160a01b038084166004830152839260009291169063de1ac2fd9060240160206040518083038186803b1580156108e057600080fd5b505afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109189190611191565b9050610923816106d4565b61093f5760405162461bcd60e51b8152600401610391906115fa565b60025460405163de1ac2fd60e01b81526001600160a01b038581166004830152600092169063de1ac2fd9060240160206040518083038186803b15801561098557600080fd5b505afa158015610999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bd9190611191565b90506128008763ffffffff1610610a105760405162461bcd60e51b81526020600482015260176024820152761b1a5cdd081a5b99195e081bdd5d081bd988189bdd5b99604a1b6044820152606401610391565b610a1a8189610292565b610a365760405162461bcd60e51b8152600401610391906115ae565b600080610a4589610100610f53565b6001600160a01b03851660009081526001602090815260408083208f8452600301909152812080549395509193509163ffffffff8516908110610a9857634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905060008263ffffffff166001901b905080821760016000876001600160a01b03166001600160a01b0316815260200190815260200160002060030160008e81526020019081526020016000208563ffffffff1681548110610b1557634e487b7160e01b600052603260045260246000fd5b90600052602060002001819055507f9c46ae7085c08a60e51dfbb0e4ddaa4dca98233a0d548b0b0975ac638d4be1b8858d8d8d8d604051610b5a959493929190611569565b60405180910390a1505050505050505050505050565b60025460405163de1ac2fd60e01b81526001600160a01b038381166004830152600092169063de1ac2fd9060240160206040518083038186803b158015610bb657600080fd5b505afa158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee9190611191565b9050610bf9816106d4565b15610c465760405162461bcd60e51b815260206004820152601a60248201527f77616c6c657420616c726561647920696e2072656769737472790000000000006044820152606401610391565b6001600160a01b038116600090815260016020819052604091829020805460ff1916909117815590517f7b40516caa9d605d0548095089dc3d94f4956f34258f93c3892dec91c95f6dbb90610ca0908490889088906114e5565b60405180910390a15050505050565b60025460405163de1ac2fd60e01b81526001600160a01b038084166004830152839260009291169063de1ac2fd9060240160206040518083038186803b158015610cf857600080fd5b505afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d309190611191565b9050610d3b816106d4565b610d575760405162461bcd60e51b8152600401610391906115fa565b60025460405163de1ac2fd60e01b81526001600160a01b038581166004830152600092169063de1ac2fd9060240160206040518083038186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd59190611191565b9050610de18188610292565b15610e425760405162461bcd60e51b815260206004820152602b60248201527f7265766f636174696f6e206c697374207769746820676976656e20696420616c60448201526a1c9958591e48195e1a5cdd60aa1b6064820152608401610391565b6001600160a01b038116600090815260016020526040812090610e6961010061280061162a565b67ffffffffffffffff811115610e8f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610eb8578160200160208202803683370190505b5060008a81526002840160209081526040808320805460ff191660011790556003860182529091208251929350610ef3929091840190611077565b50600182018054906000610f0683611661565b91905055507fd89088221762844f5543989c5f9c2fcd590af3f025969478b23f67f880351622838a8a8a604051610f409493929190611525565b60405180910390a1505050505050505050565b6000808263ffffffff168463ffffffff161015610f7557506000905082610f97565b6000610f81848661163e565b90506000610f8f8587611688565b919350909150505b9250929050565b60006101008210610fff5760405162461bcd60e51b815260206004820152602560248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2038604482015264206269747360d81b6064820152608401610391565b5090565b600080600083516041146110595760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401610391565b50505060208101516040820151606090920151909260009190911a90565b8280548282559060005260206000209081019282156110b2579160200282015b828111156110b2578251825591602001919060010190611097565b50610fff9291505b80821115610fff57600081556001016110ba565b600082601f8301126110de578081fd5b813567ffffffffffffffff808211156110f9576110f96116c1565b604051601f8301601f19908116603f01168101908282118183101715611121576111216116c1565b81604052838152866020858801011115611139578485fd5b8360208701602083013792830160200193909352509392505050565b803563ffffffff8116811461116957600080fd5b919050565b60006020828403121561117f578081fd5b813561118a816116d7565b9392505050565b6000602082840312156111a2578081fd5b815161118a816116d7565b600080604083850312156111bf578081fd5b82356111ca816116d7565b946020939093013593505050565b6000806000606084860312156111ec578081fd5b83356111f7816116d7565b92506020840135915061120c60408501611155565b90509250925092565b60008060408385031215611227578182fd5b823567ffffffffffffffff8082111561123e578384fd5b61124a868387016110ce565b9350602085013591508082111561125f578283fd5b5061126c858286016110ce565b9150509250929050565b60008060006060848603121561128a578283fd5b833567ffffffffffffffff808211156112a1578485fd5b6112ad878388016110ce565b945060208601359150808211156112c2578384fd5b6112ce878388016110ce565b935060408601359150808211156112e3578283fd5b506112f0868287016110ce565b9150509250925092565b60008060006060848603121561130e578283fd5b83359250602084013567ffffffffffffffff808211156112c2578384fd5b60008060008060808587031215611341578081fd5b84359350602085013567ffffffffffffffff8082111561135f578283fd5b61136b888389016110ce565b94506040870135915080821115611380578283fd5b61138c888389016110ce565b935060608701359150808211156113a1578283fd5b506113ae878288016110ce565b91505092959194509250565b600080600080608085870312156113cf578384fd5b843593506113df60208601611155565b9250604085013567ffffffffffffffff80821115611380578384fd5b600080600080600060a08688031215611412578081fd5b8535945061142260208701611155565b9350604086013567ffffffffffffffff8082111561143e578283fd5b61144a89838a016110ce565b9450606088013591508082111561145f578283fd5b61146b89838a016110ce565b93506080880135915080821115611480578283fd5b5061148d888289016110ce565b9150509295509295909350565b60008151808452815b818110156114bf576020818501810151868301820152016114a3565b818111156114d05782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03841681526060602082018190526000906115099083018561149a565b828103604084015261151b818561149a565b9695505050505050565b60018060a01b038516815283602082015260806040820152600061154c608083018561149a565b828103606084015261155e818561149a565b979650505050505050565b60018060a01b038616815284602082015263ffffffff8416604082015260a06060820152600061159c60a083018561149a565b828103608084015261055f818561149a565b6020808252602c908201527f7265766f636174696f6e206c697374207769746820676976656e20696420646f60408201526b195cc81b9bdd08195e1a5cdd60a21b606082015260800190565b60208082526016908201527577616c6c6574206e6f7420696e20726567697374727960501b604082015260600190565b600082611639576116396116ab565b500490565b600063ffffffff80841680611655576116556116ab565b92169190910492915050565b600060001982141561168157634e487b7160e01b81526011600452602481fd5b5060010190565b600063ffffffff8084168061169f5761169f6116ab565b92169190910692915050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461040357600080fdfea264697066735822122011e80521e89c69f756f6e41ac642de910ba21a0741f0d8c7a03d4aa3c578bd4064736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806393d630f01161008c578063cb7dfa2211610066578063cb7dfa2214610204578063f4aa03cb1461021a578063f97cbecd1461022d578063fb5e3c251461024057600080fd5b806393d630f0146101b1578063a3b3cfbc146101d6578063c86cb67a146101f157600080fd5b8063318c6af9116100c8578063318c6af9146101705780634d5fff6d146101835780638129fc1c14610196578063872bf91c1461019e57600080fd5b8063038defd7146100ef57806306295354146101385780630b3738ac1461014d575b600080fd5b61011c6100fd36600461116e565b6001602081905260009182526040909120805491015460ff9091169082565b6040805192151583526020830191909152015b60405180910390f35b61014b6101463660046113fb565b610253565b005b61016061015b3660046111ad565b610292565b604051901515815260200161012f565b61014b61017e366004611276565b6102c1565b61014b6101913660046113ba565b6102eb565b61014b6102f8565b61014b6101ac36600461132c565b610406565b6101c46101bf3660046111d8565b610432565b60405160ff909116815260200161012f565b6002546040516001600160a01b03909116815260200161012f565b61014b6101ff3660046112fa565b61056b565b61020c61057c565b60405190815260200161012f565b61014b610228366004611215565b6106c5565b61016061023b36600461116e565b6106d4565b61014b61024e36600461116e565b6106f2565b6040805133602082015260009161027b91015b6040516020818303038152906040528361080e565b905061028a8686868685610897565b505050505050565b6001600160a01b0391909116600090815260016020908152604080832093835260029093019052205460ff1690565b604080513360208201526000916102d89101610266565b90506102e5848483610b70565b50505050565b6102e58484848433610897565b600054610100900460ff16158080156103185750600054600160ff909116105b806103325750303b158015610332575060005460ff166001145b61039a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156103bd576000805461ff0019166101001790555b8015610403576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6040805133602082015260009161041d9101610266565b905061042b85858584610caf565b5050505050565b60006128008263ffffffff16106104855760405162461bcd60e51b81526020600482015260176024820152761b1a5cdd081a5b99195e081bdd5d081bd988189bdd5b99604a1b6044820152606401610391565b61048e846106d4565b6104aa5760405162461bcd60e51b8152600401610391906115fa565b6104b48484610292565b6104d05760405162461bcd60e51b8152600401610391906115ae565b6000806104df84610100610f53565b6001600160a01b03881660009081526001602081815260408084208b85526003019091528220805494965092945063ffffffff8086169190911b93919284929091871690811061053f57634e487b7160e01b600052603260045260246000fd5b906000526020600020015416905061055f8363ffffffff1682901c610f9e565b98975050505050505050565b61057783838333610caf565b505050565b60025460405163de1ac2fd60e01b81523360048201819052600092909183916001600160a01b03169063de1ac2fd9060240160206040518083038186803b1580156105c657600080fd5b505afa1580156105da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fe9190611191565b9050610609816106d4565b6106255760405162461bcd60e51b8152600401610391906115fa565b60025460405163de1ac2fd60e01b81523360048201526000916001600160a01b03169063de1ac2fd9060240160206040518083038186803b15801561066957600080fd5b505afa15801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190611191565b6001600160a01b031660009081526001602081905260409091200154935050505090565b6106d0828233610b70565b5050565b6001600160a01b031660009081526001602052604090205460ff1690565b6002546001600160a01b031615806107a05750600260009054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b15801561075357600080fd5b505afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190611191565b6001600160a01b0316336001600160a01b0316145b6107ec5760405162461bcd60e51b815260206004820152601e60248201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e4600006044820152606401610391565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b81516020830120600090600080600061082686611003565b60408051600081526020810180835289905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015610881573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b60025460405163de1ac2fd60e01b81526001600160a01b038084166004830152839260009291169063de1ac2fd9060240160206040518083038186803b1580156108e057600080fd5b505afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109189190611191565b9050610923816106d4565b61093f5760405162461bcd60e51b8152600401610391906115fa565b60025460405163de1ac2fd60e01b81526001600160a01b038581166004830152600092169063de1ac2fd9060240160206040518083038186803b15801561098557600080fd5b505afa158015610999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bd9190611191565b90506128008763ffffffff1610610a105760405162461bcd60e51b81526020600482015260176024820152761b1a5cdd081a5b99195e081bdd5d081bd988189bdd5b99604a1b6044820152606401610391565b610a1a8189610292565b610a365760405162461bcd60e51b8152600401610391906115ae565b600080610a4589610100610f53565b6001600160a01b03851660009081526001602090815260408083208f8452600301909152812080549395509193509163ffffffff8516908110610a9857634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905060008263ffffffff166001901b905080821760016000876001600160a01b03166001600160a01b0316815260200190815260200160002060030160008e81526020019081526020016000208563ffffffff1681548110610b1557634e487b7160e01b600052603260045260246000fd5b90600052602060002001819055507f9c46ae7085c08a60e51dfbb0e4ddaa4dca98233a0d548b0b0975ac638d4be1b8858d8d8d8d604051610b5a959493929190611569565b60405180910390a1505050505050505050505050565b60025460405163de1ac2fd60e01b81526001600160a01b038381166004830152600092169063de1ac2fd9060240160206040518083038186803b158015610bb657600080fd5b505afa158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee9190611191565b9050610bf9816106d4565b15610c465760405162461bcd60e51b815260206004820152601a60248201527f77616c6c657420616c726561647920696e2072656769737472790000000000006044820152606401610391565b6001600160a01b038116600090815260016020819052604091829020805460ff1916909117815590517f7b40516caa9d605d0548095089dc3d94f4956f34258f93c3892dec91c95f6dbb90610ca0908490889088906114e5565b60405180910390a15050505050565b60025460405163de1ac2fd60e01b81526001600160a01b038084166004830152839260009291169063de1ac2fd9060240160206040518083038186803b158015610cf857600080fd5b505afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d309190611191565b9050610d3b816106d4565b610d575760405162461bcd60e51b8152600401610391906115fa565b60025460405163de1ac2fd60e01b81526001600160a01b038581166004830152600092169063de1ac2fd9060240160206040518083038186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd59190611191565b9050610de18188610292565b15610e425760405162461bcd60e51b815260206004820152602b60248201527f7265766f636174696f6e206c697374207769746820676976656e20696420616c60448201526a1c9958591e48195e1a5cdd60aa1b6064820152608401610391565b6001600160a01b038116600090815260016020526040812090610e6961010061280061162a565b67ffffffffffffffff811115610e8f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610eb8578160200160208202803683370190505b5060008a81526002840160209081526040808320805460ff191660011790556003860182529091208251929350610ef3929091840190611077565b50600182018054906000610f0683611661565b91905055507fd89088221762844f5543989c5f9c2fcd590af3f025969478b23f67f880351622838a8a8a604051610f409493929190611525565b60405180910390a1505050505050505050565b6000808263ffffffff168463ffffffff161015610f7557506000905082610f97565b6000610f81848661163e565b90506000610f8f8587611688565b919350909150505b9250929050565b60006101008210610fff5760405162461bcd60e51b815260206004820152602560248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2038604482015264206269747360d81b6064820152608401610391565b5090565b600080600083516041146110595760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401610391565b50505060208101516040820151606090920151909260009190911a90565b8280548282559060005260206000209081019282156110b2579160200282015b828111156110b2578251825591602001919060010190611097565b50610fff9291505b80821115610fff57600081556001016110ba565b600082601f8301126110de578081fd5b813567ffffffffffffffff808211156110f9576110f96116c1565b604051601f8301601f19908116603f01168101908282118183101715611121576111216116c1565b81604052838152866020858801011115611139578485fd5b8360208701602083013792830160200193909352509392505050565b803563ffffffff8116811461116957600080fd5b919050565b60006020828403121561117f578081fd5b813561118a816116d7565b9392505050565b6000602082840312156111a2578081fd5b815161118a816116d7565b600080604083850312156111bf578081fd5b82356111ca816116d7565b946020939093013593505050565b6000806000606084860312156111ec578081fd5b83356111f7816116d7565b92506020840135915061120c60408501611155565b90509250925092565b60008060408385031215611227578182fd5b823567ffffffffffffffff8082111561123e578384fd5b61124a868387016110ce565b9350602085013591508082111561125f578283fd5b5061126c858286016110ce565b9150509250929050565b60008060006060848603121561128a578283fd5b833567ffffffffffffffff808211156112a1578485fd5b6112ad878388016110ce565b945060208601359150808211156112c2578384fd5b6112ce878388016110ce565b935060408601359150808211156112e3578283fd5b506112f0868287016110ce565b9150509250925092565b60008060006060848603121561130e578283fd5b83359250602084013567ffffffffffffffff808211156112c2578384fd5b60008060008060808587031215611341578081fd5b84359350602085013567ffffffffffffffff8082111561135f578283fd5b61136b888389016110ce565b94506040870135915080821115611380578283fd5b61138c888389016110ce565b935060608701359150808211156113a1578283fd5b506113ae878288016110ce565b91505092959194509250565b600080600080608085870312156113cf578384fd5b843593506113df60208601611155565b9250604085013567ffffffffffffffff80821115611380578384fd5b600080600080600060a08688031215611412578081fd5b8535945061142260208701611155565b9350604086013567ffffffffffffffff8082111561143e578283fd5b61144a89838a016110ce565b9450606088013591508082111561145f578283fd5b61146b89838a016110ce565b93506080880135915080821115611480578283fd5b5061148d888289016110ce565b9150509295509295909350565b60008151808452815b818110156114bf576020818501810151868301820152016114a3565b818111156114d05782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03841681526060602082018190526000906115099083018561149a565b828103604084015261151b818561149a565b9695505050505050565b60018060a01b038516815283602082015260806040820152600061154c608083018561149a565b828103606084015261155e818561149a565b979650505050505050565b60018060a01b038616815284602082015263ffffffff8416604082015260a06060820152600061159c60a083018561149a565b828103608084015261055f818561149a565b6020808252602c908201527f7265766f636174696f6e206c697374207769746820676976656e20696420646f60408201526b195cc81b9bdd08195e1a5cdd60a21b606082015260800190565b60208082526016908201527577616c6c6574206e6f7420696e20726567697374727960501b604082015260600190565b600082611639576116396116ab565b500490565b600063ffffffff80841680611655576116556116ab565b92169190910492915050565b600060001982141561168157634e487b7160e01b81526011600452602481fd5b5060010190565b600063ffffffff8084168061169f5761169f6116ab565b92169190910692915050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461040357600080fdfea264697066735822122011e80521e89c69f756f6e41ac642de910ba21a0741f0d8c7a03d4aa3c578bd4064736f6c63430008040033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:15053:6",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:6",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "66:686:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "115:24:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "124:5:6"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "131:5:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "117:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "117:20:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "117:20:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "94:6:6"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "102:4:6",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "90:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "90:17:6"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "109:3:6"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "86:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "86:27:6"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "79:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "79:35:6"
                  },
                  "nodeType": "YulIf",
                  "src": "76:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "148:30:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "171:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "158:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "158:20:6"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "152:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "187:28:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "197:18:6",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "191:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "238:22:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "240:16:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "240:18:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "240:18:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "230:2:6"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "234:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "227:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "227:10:6"
                  },
                  "nodeType": "YulIf",
                  "src": "224:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "269:17:6",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "283:2:6",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "279:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "279:7:6"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "273:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "295:23:6",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "315:2:6",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "309:5:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "309:9:6"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "299:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "327:71:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "349:6:6"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "373:2:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "377:4:6",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "369:3:6"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "369:13:6"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "384:2:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "365:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "365:22:6"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "389:2:6",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "361:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "361:31:6"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "394:2:6"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "357:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "357:40:6"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "345:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "345:53:6"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "331:10:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "457:22:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "459:16:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "459:18:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "459:18:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "416:10:6"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "428:2:6"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "413:2:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "413:18:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "436:10:6"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "448:6:6"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "433:2:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "433:22:6"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "410:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "410:46:6"
                  },
                  "nodeType": "YulIf",
                  "src": "407:2:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "495:2:6",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "499:10:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "488:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "488:22:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "488:22:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "526:6:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "534:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "519:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "519:18:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "519:18:6"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "585:24:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "594:5:6"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "601:5:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "587:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "587:20:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "587:20:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "560:6:6"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "568:2:6"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "556:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "556:15:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "573:4:6",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "552:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "552:26:6"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "580:3:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "549:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "549:35:6"
                  },
                  "nodeType": "YulIf",
                  "src": "546:2:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "635:6:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "643:4:6",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "631:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "631:17:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "654:6:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "662:4:6",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "650:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "650:17:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "669:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "618:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "618:54:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "618:54:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "696:6:6"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "704:2:6"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "692:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "692:15:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "709:4:6",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "688:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "688:26:6"
                      },
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "716:5:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "681:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "681:41:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "681:41:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "731:15:6",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "740:6:6"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "731:5:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "40:6:6",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "48:3:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "56:5:6",
                "type": ""
              }
            ],
            "src": "14:738:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "805:115:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "815:29:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "837:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "824:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "824:20:6"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "815:5:6"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "898:16:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "907:1:6",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "910:1:6",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "900:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "900:12:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "900:12:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "866:5:6"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "877:5:6"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "884:10:6",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "873:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "873:22:6"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "863:2:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "863:33:6"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "856:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "856:41:6"
                  },
                  "nodeType": "YulIf",
                  "src": "853:2:6"
                }
              ]
            },
            "name": "abi_decode_uint32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "784:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "795:5:6",
                "type": ""
              }
            ],
            "src": "757:163:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "995:187:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1041:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1050:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1058:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1043:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1043:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1043:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1016:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1025:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1012:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1012:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1037:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1008:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1008:32:6"
                  },
                  "nodeType": "YulIf",
                  "src": "1005:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1076:36:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1102:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1089:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1089:23:6"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1080:5:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1146:5:6"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1121:24:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1121:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1121:31:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1161:15:6",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1171:5:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1161:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "961:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "972:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "984:6:6",
                "type": ""
              }
            ],
            "src": "925:257:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1268:180:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1314:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1323:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1331:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1316:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1316:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1316:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1289:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1298:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1285:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1285:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1310:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1281:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1281:32:6"
                  },
                  "nodeType": "YulIf",
                  "src": "1278:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1349:29:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1368:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1362:5:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1362:16:6"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1353:5:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1412:5:6"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1387:24:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1387:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1387:31:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1427:15:6",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1437:5:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1427:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1234:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1245:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1257:6:6",
                "type": ""
              }
            ],
            "src": "1187:261:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1540:238:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1586:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "1595:6:6"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "1603:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1588:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1588:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1588:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1561:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1570:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1557:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1557:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1582:2:6",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1553:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1553:32:6"
                  },
                  "nodeType": "YulIf",
                  "src": "1550:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1621:36:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1647:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1634:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1634:23:6"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1625:5:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1691:5:6"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1666:24:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1666:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1666:31:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1706:15:6",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1716:5:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1706:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1730:42:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1757:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1768:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1753:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1753:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1740:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1740:32:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1730:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1498:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1509:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1521:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1529:6:6",
                "type": ""
              }
            ],
            "src": "1453:325:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1886:294:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1932:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "1941:6:6"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "1949:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1934:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1934:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1934:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1907:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1916:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1903:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1903:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1928:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1899:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1899:32:6"
                  },
                  "nodeType": "YulIf",
                  "src": "1896:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1967:36:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1993:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1980:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1980:23:6"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1971:5:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2037:5:6"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2012:24:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2012:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2012:31:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2052:15:6",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2062:5:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2052:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2076:42:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2103:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2114:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2099:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2099:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2086:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2086:32:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2076:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2127:47:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2159:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2170:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2155:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2155:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint32",
                      "nodeType": "YulIdentifier",
                      "src": "2137:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2137:37:6"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2127:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256t_uint32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1836:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1847:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1859:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1867:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "1875:6:6",
                "type": ""
              }
            ],
            "src": "1783:397:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2292:464:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2338:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2347:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2355:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2340:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2340:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2340:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2313:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2322:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2309:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2309:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2334:2:6",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2305:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2305:32:6"
                  },
                  "nodeType": "YulIf",
                  "src": "2302:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2373:37:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2400:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2387:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2387:23:6"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2377:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2419:28:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2429:18:6",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2423:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2474:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2483:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2491:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2476:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2476:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2476:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2462:6:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2470:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2459:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2459:14:6"
                  },
                  "nodeType": "YulIf",
                  "src": "2456:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2509:59:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2540:9:6"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2551:6:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2536:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2536:22:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2560:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "2519:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2519:49:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2509:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2577:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2610:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2621:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2606:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2606:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2593:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2593:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "2581:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2654:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2663:6:6"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2671:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2656:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2656:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2656:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "2640:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2650:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2637:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2637:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "2634:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2689:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2720:9:6"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "2731:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2716:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2716:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2742:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "2699:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2699:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2689:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2250:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2261:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2273:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2281:6:6",
                "type": ""
              }
            ],
            "src": "2185:571:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2894:646:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2940:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2949:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2957:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2942:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2942:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2942:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2915:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2924:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2911:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2911:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2936:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2907:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2907:32:6"
                  },
                  "nodeType": "YulIf",
                  "src": "2904:2:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2975:37:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3002:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2989:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2989:23:6"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2979:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3021:28:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3031:18:6",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3025:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3076:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3085:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3093:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3078:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3078:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3078:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3064:6:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3072:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3061:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3061:14:6"
                  },
                  "nodeType": "YulIf",
                  "src": "3058:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3111:59:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3142:9:6"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3153:6:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3138:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3138:22:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3162:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "3121:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3121:49:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3111:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3179:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3212:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3223:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3208:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3208:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3195:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3195:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "3183:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3256:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3265:6:6"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3273:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3258:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3258:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3258:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "3242:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3252:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3239:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3239:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "3236:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3291:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3322:9:6"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "3333:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3318:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3318:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3344:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "3301:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3301:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3291:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3361:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3394:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3405:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3390:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3390:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3377:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3377:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "3365:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3438:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "3447:6:6"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "3455:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3440:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3440:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3440:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "3424:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3434:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3421:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3421:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "3418:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3473:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3504:9:6"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "3515:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3500:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3500:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3526:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "3483:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3483:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3473:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2844:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2855:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2867:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2875:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2883:6:6",
                "type": ""
              }
            ],
            "src": "2761:779:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3669:515:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3715:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3724:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3732:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3717:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3717:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3717:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3690:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3699:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3686:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3686:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3711:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3682:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3682:32:6"
                  },
                  "nodeType": "YulIf",
                  "src": "3679:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3750:33:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3773:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3760:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3760:23:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3750:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3792:46:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3823:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3834:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3819:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3819:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3806:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3806:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3796:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3847:28:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3857:18:6",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3851:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3902:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3911:6:6"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3919:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3904:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3904:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3904:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3890:6:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3898:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3887:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3887:14:6"
                  },
                  "nodeType": "YulIf",
                  "src": "3884:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3937:59:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3968:9:6"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3979:6:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3964:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3964:22:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3988:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "3947:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3947:49:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3937:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4005:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4038:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4049:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4034:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4034:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4021:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4021:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "4009:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4082:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "4091:6:6"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "4099:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4084:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4084:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4084:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "4068:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4078:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4065:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4065:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "4062:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4117:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4148:9:6"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "4159:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4144:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4144:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4170:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "4127:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4127:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "4117:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3619:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3630:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3642:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3650:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3658:6:6",
                "type": ""
              }
            ],
            "src": "3545:639:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4339:698:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4386:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4395:6:6"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4403:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4388:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4388:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4388:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4360:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4369:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4356:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4356:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4381:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4352:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4352:33:6"
                  },
                  "nodeType": "YulIf",
                  "src": "4349:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4421:33:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4444:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4431:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4431:23:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4421:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4463:46:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4494:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4505:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4490:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4490:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4477:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4477:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4467:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4518:28:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "4528:18:6",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4522:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4573:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4582:6:6"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4590:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4575:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4575:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4575:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4561:6:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4569:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4558:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4558:14:6"
                  },
                  "nodeType": "YulIf",
                  "src": "4555:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4608:59:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4639:9:6"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4650:6:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4635:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4635:22:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4659:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "4618:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4618:49:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4608:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4676:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4709:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4720:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4705:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4705:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4692:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4692:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "4680:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4753:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4762:6:6"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4770:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4755:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4755:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4755:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "4739:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4749:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4736:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4736:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "4733:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4788:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4819:9:6"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "4830:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4815:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4815:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4841:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "4798:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4798:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "4788:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4858:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4891:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4902:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4887:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4887:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4874:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4874:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "4862:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4935:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4944:6:6"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "4952:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4937:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4937:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4937:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "4921:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4931:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4918:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4918:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "4915:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4970:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5001:9:6"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "5012:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4997:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4997:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5023:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "4980:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4980:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "4970:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4281:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4292:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4304:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4312:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "4320:6:6",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "4328:6:6",
                "type": ""
              }
            ],
            "src": "4189:848:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5182:572:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5229:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5238:6:6"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5246:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5231:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5231:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5231:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5203:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5212:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5199:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5199:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5224:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5195:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5195:33:6"
                  },
                  "nodeType": "YulIf",
                  "src": "5192:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5264:33:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5287:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5274:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5274:23:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5264:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5306:47:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5338:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5349:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5334:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5334:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint32",
                      "nodeType": "YulIdentifier",
                      "src": "5316:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5316:37:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5306:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5362:46:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5393:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5404:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5389:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5389:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5376:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5376:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5366:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5417:28:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5427:18:6",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5421:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5472:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5481:6:6"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5489:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5474:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5474:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5474:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5460:6:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5468:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5457:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5457:14:6"
                  },
                  "nodeType": "YulIf",
                  "src": "5454:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5507:59:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5538:9:6"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5549:6:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5534:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5534:22:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5558:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5517:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5517:49:6"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "5507:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5575:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5608:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5619:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5604:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5604:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5591:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5591:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "5579:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5652:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "5661:6:6"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "5669:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5654:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5654:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5654:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "5638:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5648:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5635:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5635:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "5632:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5687:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5718:9:6"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "5729:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5714:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5714:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5740:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5697:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5697:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "5687:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint32t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5124:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5135:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5147:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5155:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5163:6:6",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5171:6:6",
                "type": ""
              }
            ],
            "src": "5042:712:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5925:755:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5972:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5981:6:6"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5989:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5974:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5974:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5974:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5946:7:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5955:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5942:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5942:23:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5967:3:6",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5938:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5938:33:6"
                  },
                  "nodeType": "YulIf",
                  "src": "5935:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6007:33:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6030:9:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6017:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6017:23:6"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6007:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6049:47:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6081:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6092:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6077:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6077:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint32",
                      "nodeType": "YulIdentifier",
                      "src": "6059:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6059:37:6"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6049:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6105:46:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6136:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6147:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6132:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6132:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6119:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6119:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6109:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6160:28:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6170:18:6",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6164:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6215:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6224:6:6"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6232:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6217:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6217:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6217:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6203:6:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6211:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6200:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6200:14:6"
                  },
                  "nodeType": "YulIf",
                  "src": "6197:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6250:59:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6281:9:6"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "6292:6:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6277:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6277:22:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6301:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6260:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6260:49:6"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "6250:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6318:48:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6351:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6362:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6347:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6347:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6334:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6334:32:6"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "6322:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6395:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6404:6:6"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6412:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6397:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6397:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6397:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "6381:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6391:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6378:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6378:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "6375:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6430:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6461:9:6"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "6472:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6457:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6457:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6483:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6440:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6440:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "6430:6:6"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6500:49:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6533:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6544:3:6",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6529:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6529:19:6"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6516:12:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6516:33:6"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "6504:8:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6578:26:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6587:6:6"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6595:6:6"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6580:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6580:22:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6580:22:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "6564:8:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6574:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6561:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6561:16:6"
                  },
                  "nodeType": "YulIf",
                  "src": "6558:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6613:61:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6644:9:6"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "6655:8:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6640:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6640:24:6"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6666:7:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6623:16:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6623:51:6"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "6613:6:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint32t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5859:9:6",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5870:7:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5882:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5890:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5898:6:6",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5906:6:6",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "5914:6:6",
                "type": ""
              }
            ],
            "src": "5759:921:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6735:426:6",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6745:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6765:5:6"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6759:5:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6759:12:6"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "6749:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "6787:3:6"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6792:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6780:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6780:19:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6780:19:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6808:12:6",
                  "value": {
                    "name": "end",
                    "nodeType": "YulIdentifier",
                    "src": "6817:3:6"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "6812:1:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6881:110:6",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6895:14:6",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "6905:4:6",
                          "type": "",
                          "value": "0x20"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "6899:2:6",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "6937:3:6"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "6942:1:6"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "6933:3:6"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "6933:11:6"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6946:2:6"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "6929:3:6"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6929:20:6"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "6965:5:6"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6972:1:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6961:3:6"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6961:13:6"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "6976:2:6"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "6957:3:6"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "6957:22:6"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "6951:5:6"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6951:29:6"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6922:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6922:59:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6922:59:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "6840:1:6"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6843:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "6837:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6837:13:6"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "6851:21:6",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6853:17:6",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "6862:1:6"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6865:4:6",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6858:3:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6858:12:6"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "6853:1:6"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "6833:3:6",
                    "statements": []
                  },
                  "src": "6829:162:6"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7025:64:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "7054:3:6"
                                    },
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "7059:6:6"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "7050:3:6"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "7050:16:6"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7068:4:6",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "7046:3:6"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7046:27:6"
                            },
                            {
                              "name": "end",
                              "nodeType": "YulIdentifier",
                              "src": "7075:3:6"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "7039:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7039:40:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7039:40:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "7006:1:6"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7009:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7003:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7003:13:6"
                  },
                  "nodeType": "YulIf",
                  "src": "7000:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7098:57:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "7113:3:6"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7126:6:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7134:2:6",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7122:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7122:15:6"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7143:2:6",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "7139:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7139:7:6"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "7118:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7118:29:6"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7109:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7109:39:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7150:4:6",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7105:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7105:50:6"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "7098:3:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6712:5:6",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "6719:3:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "6727:3:6",
                "type": ""
              }
            ],
            "src": "6685:476:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7267:102:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7277:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7289:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7300:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7285:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7285:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7277:4:6"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7319:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "7334:6:6"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7350:3:6",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7355:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "7346:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7346:11:6"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7359:1:6",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "7342:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7342:19:6"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7330:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7330:32:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7312:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7312:51:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7312:51:6"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7236:9:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7247:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7258:4:6",
                "type": ""
              }
            ],
            "src": "7166:203:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7571:283:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7588:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "7603:6:6"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7619:3:6",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7624:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "7615:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7615:11:6"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7628:1:6",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "7611:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7611:19:6"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7599:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7599:32:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7581:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7581:51:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7581:51:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7652:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7663:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7648:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7648:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7668:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7641:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7641:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7641:30:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7680:59:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "7712:6:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7724:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7735:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7720:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7720:18:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "7694:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7694:45:6"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "7684:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7759:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7770:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7755:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7755:18:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "7779:6:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7787:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7775:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7775:22:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7748:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7748:50:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7748:50:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7807:41:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "7833:6:6"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "7841:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "7815:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7815:33:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7807:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7524:9:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "7535:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7543:6:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7551:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7562:4:6",
                "type": ""
              }
            ],
            "src": "7374:480:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8084:328:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8101:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "8116:6:6"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8132:3:6",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8137:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "8128:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8128:11:6"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8141:1:6",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "8124:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8124:19:6"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "8112:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8112:32:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8094:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8094:51:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8094:51:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8165:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8176:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8161:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8161:18:6"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "8181:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8154:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8154:34:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8154:34:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8208:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8219:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8204:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8204:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8224:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8197:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8197:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8197:31:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8237:60:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "8269:6:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8281:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8292:3:6",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8277:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8277:19:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "8251:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8251:46:6"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "8241:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8317:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8328:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8313:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8313:18:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "8337:6:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8345:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8333:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8333:22:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8306:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8306:50:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8306:50:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8365:41:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "8391:6:6"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "8399:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "8373:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8373:33:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8365:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8029:9:6",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "8040:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "8048:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8056:6:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8064:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8075:4:6",
                "type": ""
              }
            ],
            "src": "7859:553:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8668:389:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8685:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "8700:6:6"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8716:3:6",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8721:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "8712:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8712:11:6"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8725:1:6",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "8708:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8708:19:6"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "8696:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8696:32:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8678:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8678:51:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8678:51:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8749:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8760:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8745:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8745:18:6"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "8765:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8738:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8738:34:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8738:34:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8792:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8803:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8788:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8788:18:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "8812:6:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8820:10:6",
                            "type": "",
                            "value": "0xffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "8808:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8808:23:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8781:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8781:51:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8781:51:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8852:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8863:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8848:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8848:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8868:3:6",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8841:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8841:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8841:31:6"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8881:60:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "8913:6:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8925:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8936:3:6",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8921:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8921:19:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "8895:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8895:46:6"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "8885:6:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8961:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8972:3:6",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8957:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8957:19:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "8982:6:6"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8990:9:6"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8978:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8978:22:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8950:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8950:51:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8950:51:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9010:41:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "9036:6:6"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "9044:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "9018:17:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9018:33:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9010:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256_t_uint32_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_uint32_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8605:9:6",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "8616:6:6",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "8624:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "8632:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8640:6:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8648:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8659:4:6",
                "type": ""
              }
            ],
            "src": "8417:640:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9157:92:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9167:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9179:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9190:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9175:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9175:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9167:4:6"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9209:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "9234:6:6"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "9227:6:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9227:14:6"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "9220:6:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9220:22:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9202:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9202:41:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9202:41:6"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9126:9:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9137:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9148:4:6",
                "type": ""
              }
            ],
            "src": "9062:187:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9377:135:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9387:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9399:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9410:2:6",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9395:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9395:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9387:4:6"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9429:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "9454:6:6"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "9447:6:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9447:14:6"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "9440:6:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9440:22:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9422:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9422:41:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9422:41:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9483:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9494:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9479:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9479:18:6"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "9499:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9472:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9472:34:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9472:34:6"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool_t_uint256__to_t_bool_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9338:9:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9349:6:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9357:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9368:4:6",
                "type": ""
              }
            ],
            "src": "9254:258:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9698:217:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9708:27:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9720:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9731:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9716:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9716:19:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9708:4:6"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9751:9:6"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "9762:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9744:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9744:25:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9744:25:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9789:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9800:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9785:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9785:18:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "9809:6:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9817:4:6",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "9805:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9805:17:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9778:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9778:45:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9778:45:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9843:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9854:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9839:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9839:18:6"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "9859:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9832:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9832:34:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9832:34:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9886:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9897:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9882:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9882:18:6"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "9902:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9875:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9875:34:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9875:34:6"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9643:9:6",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9654:6:6",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9662:6:6",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9670:6:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9678:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9689:4:6",
                "type": ""
              }
            ],
            "src": "9517:398:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10027:87:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10037:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10049:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10060:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10045:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10045:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10037:4:6"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10079:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "10094:6:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10102:4:6",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "10090:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10090:17:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10072:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10072:36:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10072:36:6"
                }
              ]
            },
            "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9996:9:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10007:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10018:4:6",
                "type": ""
              }
            ],
            "src": "9920:194:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10293:180:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10310:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10321:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10303:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10303:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10303:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10344:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10355:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10340:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10340:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10360:2:6",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10333:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10333:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10333:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10383:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10394:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10379:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10379:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10399:32:6",
                        "type": "",
                        "value": "Permissions: caller is not VNF"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10372:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10372:60:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10372:60:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10441:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10453:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10464:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10449:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10449:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10441:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10270:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10284:4:6",
                "type": ""
              }
            ],
            "src": "10119:354:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10652:227:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10669:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10680:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10662:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10662:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10662:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10703:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10714:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10699:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10699:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10719:2:6",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10692:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10692:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10692:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10742:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10753:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10738:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10738:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10758:34:6",
                        "type": "",
                        "value": "SafeCast: value doesn't fit in 8"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10731:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10731:62:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10731:62:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10813:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10824:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10809:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10809:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10829:7:6",
                        "type": "",
                        "value": " bits"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10802:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10802:35:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10802:35:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10846:27:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10858:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10869:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10854:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10854:19:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10846:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10629:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10643:4:6",
                "type": ""
              }
            ],
            "src": "10478:401:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11058:176:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11075:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11086:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11068:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11068:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11068:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11109:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11120:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11105:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11105:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11125:2:6",
                        "type": "",
                        "value": "26"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11098:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11098:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11098:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11148:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11159:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11144:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11144:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11164:28:6",
                        "type": "",
                        "value": "wallet already in registry"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11137:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11137:56:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11137:56:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11202:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11214:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11225:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11210:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11210:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11202:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_327478a3878fbc57eb8eb28ba9504a3113cfc19f71c3e85c69003bcdf55530da__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11035:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11049:4:6",
                "type": ""
              }
            ],
            "src": "10884:350:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11413:233:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11430:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11441:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11423:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11423:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11423:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11464:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11475:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11460:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11460:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11480:2:6",
                        "type": "",
                        "value": "43"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11453:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11453:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11453:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11503:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11514:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11499:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11499:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11519:34:6",
                        "type": "",
                        "value": "revocation list with given id al"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11492:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11492:62:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11492:62:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11574:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11585:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11570:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11570:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11590:13:6",
                        "type": "",
                        "value": "ready exist"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11563:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11563:41:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11563:41:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11613:27:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11625:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11636:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11621:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11621:19:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11613:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_345604656940a7a26e78b59706ecf8e9e51b2cea8bf82d6c20b58a199959bf51__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11390:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11404:4:6",
                "type": ""
              }
            ],
            "src": "11239:407:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11825:234:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11842:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11853:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11835:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11835:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11835:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11876:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11887:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11872:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11872:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11892:2:6",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11865:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11865:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11865:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11915:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11926:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11911:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11911:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11931:34:6",
                        "type": "",
                        "value": "revocation list with given id do"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11904:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11904:62:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11904:62:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11986:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11997:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11982:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11982:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12002:14:6",
                        "type": "",
                        "value": "es not exist"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11975:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11975:42:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11975:42:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12026:27:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12038:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12049:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12034:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12034:19:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12026:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_600dcab9829483713edb9c2bd8aee47368c9407d60ad13e7036eb34e5cbacdeb__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11802:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11816:4:6",
                "type": ""
              }
            ],
            "src": "11651:408:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12238:236:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12255:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12266:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12248:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12248:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12248:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12289:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12300:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12285:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12285:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12305:2:6",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12278:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12278:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12278:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12328:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12339:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12324:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12324:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12344:34:6",
                        "type": "",
                        "value": "Initializable: contract is alrea"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12317:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12317:62:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12317:62:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12399:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12410:2:6",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12395:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12395:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12415:16:6",
                        "type": "",
                        "value": "dy initialized"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12388:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12388:44:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12388:44:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12441:27:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12453:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12464:3:6",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12449:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12449:19:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12441:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12215:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12229:4:6",
                "type": ""
              }
            ],
            "src": "12064:410:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12653:173:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12670:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12681:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12663:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12663:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12663:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12704:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12715:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12700:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12700:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12720:2:6",
                        "type": "",
                        "value": "23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12693:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12693:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12693:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12743:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12754:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12739:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12739:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12759:25:6",
                        "type": "",
                        "value": "list index out of bound"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12732:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12732:53:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12732:53:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12794:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12806:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12817:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12802:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12802:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12794:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_d0abbe5d1b2e166a6f6245ebce2e4467644901ec88cb714194eb24d29f4acfcc__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12630:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12644:4:6",
                "type": ""
              }
            ],
            "src": "12479:347:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13005:174:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13022:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13033:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13015:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13015:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13015:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13056:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13067:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13052:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13052:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13072:2:6",
                        "type": "",
                        "value": "24"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13045:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13045:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13045:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13095:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13106:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13091:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13091:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13111:26:6",
                        "type": "",
                        "value": "invalid signature length"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13084:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13084:54:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13084:54:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13147:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13159:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13170:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13155:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13155:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13147:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e0060b83051574ba40ded2ef248b0d17cb210e5fa4f776d436805ab1ebb12b87__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12982:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12996:4:6",
                "type": ""
              }
            ],
            "src": "12831:348:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13358:172:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13375:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13386:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13368:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13368:21:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13368:21:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13409:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13420:2:6",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13405:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13405:18:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13425:2:6",
                        "type": "",
                        "value": "22"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13398:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13398:30:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13398:30:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13448:9:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13459:2:6",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13444:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13444:18:6"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13464:24:6",
                        "type": "",
                        "value": "wallet not in registry"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13437:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13437:52:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13437:52:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13498:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13510:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13521:2:6",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13506:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13506:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13498:4:6"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e127075bc2e60c80f7cd16779420f4912fc98f666ab206ab072530c17556ffaf__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13335:9:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13349:4:6",
                "type": ""
              }
            ],
            "src": "13184:346:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13636:76:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13646:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13658:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13669:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13654:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13654:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13646:4:6"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13688:9:6"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "13699:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13681:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13681:25:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13681:25:6"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13605:9:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13616:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13627:4:6",
                "type": ""
              }
            ],
            "src": "13535:177:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13814:87:6",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13824:26:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13836:9:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13847:2:6",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13832:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13832:18:6"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13824:4:6"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13866:9:6"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13881:6:6"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13889:4:6",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13877:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13877:17:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13859:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13859:36:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13859:36:6"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13783:9:6",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13794:6:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13805:4:6",
                "type": ""
              }
            ],
            "src": "13717:184:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13952:74:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13975:22:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x12",
                            "nodeType": "YulIdentifier",
                            "src": "13977:16:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13977:18:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13977:18:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "13972:1:6"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "13965:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13965:9:6"
                  },
                  "nodeType": "YulIf",
                  "src": "13962:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14006:14:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "14015:1:6"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "14018:1:6"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "14011:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14011:9:6"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "14006:1:6"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "13937:1:6",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "13940:1:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "13946:1:6",
                "type": ""
              }
            ],
            "src": "13906:120:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14076:146:6",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14086:20:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "14096:10:6",
                    "type": "",
                    "value": "0xffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "14090:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14115:21:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "14130:1:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "14133:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "14126:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14126:10:6"
                  },
                  "variables": [
                    {
                      "name": "y_1",
                      "nodeType": "YulTypedName",
                      "src": "14119:3:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14160:22:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x12",
                            "nodeType": "YulIdentifier",
                            "src": "14162:16:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14162:18:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14162:18:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y_1",
                        "nodeType": "YulIdentifier",
                        "src": "14155:3:6"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "14148:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14148:11:6"
                  },
                  "nodeType": "YulIf",
                  "src": "14145:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14191:25:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "14204:1:6"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "14207:2:6"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14200:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14200:10:6"
                      },
                      {
                        "name": "y_1",
                        "nodeType": "YulIdentifier",
                        "src": "14212:3:6"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "14196:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14196:20:6"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "14191:1:6"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "14061:1:6",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "14064:1:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "14070:1:6",
                "type": ""
              }
            ],
            "src": "14031:191:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14274:189:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14313:115:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "14334:3:6"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "14343:3:6",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "14348:10:6",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "14339:3:6"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14339:20:6"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "14327:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14327:33:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14327:33:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "14380:1:6",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "14383:4:6",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "14373:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14373:15:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14373:15:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "14408:3:6"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "14413:4:6",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "14401:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14401:17:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14401:17:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "14290:5:6"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14301:1:6",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "14297:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14297:6:6"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "14287:2:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14287:17:6"
                  },
                  "nodeType": "YulIf",
                  "src": "14284:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14437:20:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "14448:5:6"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14455:1:6",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14444:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14444:13:6"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "14437:3:6"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "14256:5:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "14266:3:6",
                "type": ""
              }
            ],
            "src": "14227:236:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14505:146:6",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14515:20:6",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "14525:10:6",
                    "type": "",
                    "value": "0xffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "14519:2:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14544:21:6",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "14559:1:6"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "14562:2:6"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "14555:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14555:10:6"
                  },
                  "variables": [
                    {
                      "name": "y_1",
                      "nodeType": "YulTypedName",
                      "src": "14548:3:6",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14589:22:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x12",
                            "nodeType": "YulIdentifier",
                            "src": "14591:16:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14591:18:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14591:18:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y_1",
                        "nodeType": "YulIdentifier",
                        "src": "14584:3:6"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "14577:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14577:11:6"
                  },
                  "nodeType": "YulIf",
                  "src": "14574:2:6"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14620:25:6",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "14633:1:6"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "14636:2:6"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14629:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14629:10:6"
                      },
                      {
                        "name": "y_1",
                        "nodeType": "YulIdentifier",
                        "src": "14641:3:6"
                      }
                    ],
                    "functionName": {
                      "name": "mod",
                      "nodeType": "YulIdentifier",
                      "src": "14625:3:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14625:20:6"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "14620:1:6"
                    }
                  ]
                }
              ]
            },
            "name": "mod_t_uint32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "14490:1:6",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "14493:1:6",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "14499:1:6",
                "type": ""
              }
            ],
            "src": "14468:183:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14688:95:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14705:1:6",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14712:3:6",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14717:10:6",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "14708:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14708:20:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14698:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14698:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14698:31:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14745:1:6",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14748:4:6",
                        "type": "",
                        "value": "0x12"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14738:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14738:15:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14738:15:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14769:1:6",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14772:4:6",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "14762:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14762:15:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14762:15:6"
                }
              ]
            },
            "name": "panic_error_0x12",
            "nodeType": "YulFunctionDefinition",
            "src": "14656:127:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14820:95:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14837:1:6",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14844:3:6",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14849:10:6",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "14840:3:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14840:20:6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14830:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14830:31:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14830:31:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14877:1:6",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14880:4:6",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14870:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14870:15:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14870:15:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14901:1:6",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14904:4:6",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "14894:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14894:15:6"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14894:15:6"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "14788:127:6"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14965:86:6",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15029:16:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15038:1:6",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15041:1:6",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15031:6:6"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15031:12:6"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15031:12:6"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "14988:5:6"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14999:5:6"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15014:3:6",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15019:1:6",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "15010:3:6"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15010:11:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15023:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "15006:3:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15006:19:6"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "14995:3:6"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14995:31:6"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "14985:2:6"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14985:42:6"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "14978:6:6"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14978:50:6"
                  },
                  "nodeType": "YulIf",
                  "src": "14975:2:6"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "14954:5:6",
                "type": ""
              }
            ],
            "src": "14920:131:6"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0xffffffffffffffff\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), array)\n        array := memPtr\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(value2, value2) }\n        value2 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value3, value3) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value3, value3) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value3, value3) }\n        value2 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value3, value3) }\n        value3 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_uint32t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value3, value3) }\n        value3 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_uint32t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := end\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), end)\n        }\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), 128)\n        let tail_1 := abi_encode_string(value2, add(headStart, 128))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        tail := abi_encode_string(value3, tail_1)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint32_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_uint32_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n        mstore(add(headStart, 96), 160)\n        let tail_1 := abi_encode_string(value3, add(headStart, 160))\n        mstore(add(headStart, 128), sub(tail_1, headStart))\n        tail := abi_encode_string(value4, tail_1)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bool_t_uint256__to_t_bool_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, iszero(iszero(value0)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Permissions: caller is not VNF\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"SafeCast: value doesn't fit in 8\")\n        mstore(add(headStart, 96), \" bits\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_327478a3878fbc57eb8eb28ba9504a3113cfc19f71c3e85c69003bcdf55530da__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"wallet already in registry\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_345604656940a7a26e78b59706ecf8e9e51b2cea8bf82d6c20b58a199959bf51__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"revocation list with given id al\")\n        mstore(add(headStart, 96), \"ready exist\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_600dcab9829483713edb9c2bd8aee47368c9407d60ad13e7036eb34e5cbacdeb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"revocation list with given id do\")\n        mstore(add(headStart, 96), \"es not exist\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d0abbe5d1b2e166a6f6245ebce2e4467644901ec88cb714194eb24d29f4acfcc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"list index out of bound\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e0060b83051574ba40ded2ef248b0d17cb210e5fa4f776d436805ab1ebb12b87__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e127075bc2e60c80f7cd16779420f4912fc98f666ab206ab072530c17556ffaf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"wallet not in registry\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function checked_div_t_uint32(x, y) -> r\n    {\n        let _1 := 0xffffffff\n        let y_1 := and(y, _1)\n        if iszero(y_1) { panic_error_0x12() }\n        r := div(and(x, _1), y_1)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(ret, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function mod_t_uint32(x, y) -> r\n    {\n        let _1 := 0xffffffff\n        let y_1 := and(y, _1)\n        if iszero(y_1) { panic_error_0x12() }\n        r := mod(and(x, _1), y_1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
      "id": 6,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "507:6334:5:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "507:6334:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:60;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9447:14:6;;9440:22;9422:41;;9494:2;9479:18;;9472:34;;;;9395:18;902:60:5;;;;;;;;4850:328;;;;;;:::i;:::-;;:::i;:::-;;2145:156;;;;;;:::i;:::-;;:::i;:::-;;;9227:14:6;;9220:22;9202:41;;9190:2;9175:18;2145:156:5;9157:92:6;2772:261:5;;;;;;:::i;:::-;;:::i;4643:201::-;;;;;;:::i;:::-;;:::i;1411:43::-;;;:::i;3645:301::-;;;;;;:::i;:::-;;:::i;5935:668::-;;;;;;:::i;:::-;;:::i;:::-;;;10102:4:6;10090:17;;;10072:36;;10060:2;10045:18;5935:668:5;10027:87:6;1707:107:5;1795:11;;1707:107;;-1:-1:-1;;;;;1795:11:5;;;7312:51:6;;7300:2;7285:18;1707:107:5;7267:102:6;3465:174:5;;;;;;:::i;:::-;;:::i;6609:230::-;;;:::i;:::-;;;13681:25:6;;;13669:2;13654:18;6609:230:5;13636:76:6;2632:134:5;;;;;;:::i;:::-;;:::i;1820:123::-;;;;;;:::i;:::-;;:::i;1460:241::-;;;;;;:::i;:::-;;:::i;4850:328::-;5061:22;;;5072:10;5061:22;;;7312:51:6;5006:16:5;;5025:70;;7285:18:6;5061:22:5;;;;;;;;;;;;;5085:9;5025:35;:70::i;:::-;5006:89;;5105:66;5130:6;5138:5;5145:7;5154:6;5162:8;5105:24;:66::i;:::-;4850:328;;;;;;:::o;2145:156::-;-1:-1:-1;;;;;2258:16:5;;;;2231:4;2258:16;;;:8;:16;;;;;;;;:36;;;:28;;;;:36;;;;;;;2145:156::o;2772:261::-;2938:22;;;2949:10;2938:22;;;7312:51:6;2883:16:5;;2902:70;;7285:18:6;2938:22:5;7267:102:6;2902:70:5;2883:89;;2982:44;3000:7;3009:6;3017:8;2982:17;:44::i;:::-;2772:261;;;;:::o;4643:201::-;4769:68;4794:6;4802:5;4809:7;4818:6;4826:10;4769:24;:68::i;1411:43::-;3279:19:0;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:0;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:0;1713:19:1;:23;;;3387:66:0;;-1:-1:-1;3436:12:0;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:0;;12266:2:6;3325:201:0;;;12248:21:6;12305:2;12285:18;;;12278:30;12344:34;12324:18;;;12317:62;-1:-1:-1;;;12395:18:6;;;12388:44;12449:19;;3325:201:0;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:0;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:0;;;;;3562:65;3651:14;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:0;;;3721:14;;-1:-1:-1;10072:36:6;;3721:14:0;;10060:2:6;10045:18;3721:14:0;;;;;;;3647:99;1411:43:5;:::o;3645:301::-;3835:22;;;3846:10;3835:22;;;7312:51:6;3780:16:5;;3799:70;;7285:18:6;3835:22:5;7267:102:6;3799:70:5;3780:89;;3879:60;3905:6;3913:7;3922:6;3930:8;3879:25;:60::i;:::-;3645:301;;;;;:::o;5935:668::-;6058:19;608:5;6098;:30;;;6090:66;;;;-1:-1:-1;;;6090:66:5;;12681:2:6;6090:66:5;;;12663:21:6;12720:2;12700:18;;;12693:30;-1:-1:-1;;;12739:18:6;;;12732:53;12802:18;;6090:66:5;12653:173:6;6090:66:5;6174:21;6188:6;6174:13;:21::i;:::-;6166:56;;;;-1:-1:-1;;;6166:56:5;;;;;;;:::i;:::-;6240:27;6252:6;6260;6240:11;:27::i;:::-;6232:84;;;;-1:-1:-1;;;6232:84:5;;;;;;;:::i;:::-;6328:10;6340:13;6357:32;6378:5;6385:3;6357:20;:32::i;:::-;-1:-1:-1;;;;;6458:16:5;;6400:12;6458:16;;;6415:1;6458:16;;;;;;;;:30;;;:22;;:30;;;;;:35;;6327:62;;-1:-1:-1;6327:62:5;;-1:-1:-1;6415:11:5;;;;;;;;;6400:12;;6415:11;;6458:30;;:35;;;;;;;-1:-1:-1;;;6458:35:5;;;;;;;;;;;;;;;;;:42;6436:64;;6526:39;6558:6;6543:21;;:11;:21;;6526:16;:39::i;:::-;6510:55;5935:668;-1:-1:-1;;;;;;;;5935:668:5:o;3465:174::-;3570:62;3596:6;3604:7;3613:6;3621:10;3570:25;:62::i;:::-;3465:174;;;:::o;6609:230::-;2019:11;;:35;;-1:-1:-1;;;2019:35:5;;6684:10;2019:35;;;7312:51:6;;;6709:7:5;;6684:10;;6709:7;;-1:-1:-1;;;;;2019:11:5;;:25;;7285:18:6;;2019:35:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2001:53;;2072:22;2086:7;2072:13;:22::i;:::-;2064:57;;;;-1:-1:-1;;;2064:57:5;;;;;;;:::i;:::-;6750:11:::1;::::0;:37:::1;::::0;-1:-1:-1;;;6750:37:5;;6776:10:::1;6750:37;::::0;::::1;7312:51:6::0;6732:15:5::1;::::0;-1:-1:-1;;;;;6750:11:5::1;::::0;:25:::1;::::0;7285:18:6;;6750:37:5::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6804:17:5::1;;::::0;;;:8:::1;:17;::::0;;;;;;;:28:::1;::::0;;-1:-1:-1;;6609:230:5;;;:::o;2632:134::-;2713:46;2731:7;2740:6;2748:10;2713:17;:46::i;:::-;2632:134;;:::o;1820:123::-;-1:-1:-1;;;;;1903:16:5;1880:4;1903:16;;;:8;:16;;;;;:33;;;;1820:123::o;1460:241::-;1546:11;;-1:-1:-1;;;;;1546:11:5;1538:34;;:72;;;1590:11;;;;;;;;;-1:-1:-1;;;;;1590:11:5;-1:-1:-1;;;;;1590:18:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1576:34:5;:10;-1:-1:-1;;;;;1576:34:5;;1538:72;1530:115;;;;-1:-1:-1;;;1530:115:5;;10321:2:6;1530:115:5;;;10303:21:6;10360:2;10340:18;;;10333:30;10399:32;10379:18;;;10372:60;10449:18;;1530:115:5;10293:180:6;1530:115:5;1655:11;:39;;-1:-1:-1;;;;;;1655:39:5;-1:-1:-1;;;;;1655:39:5;;;;;;;;;;1460:241::o;546:306:3:-;179:19;;;;;;662:7;;738:9;749;760:7;771:26;786:10;771:14;:26::i;:::-;814:31;;;;;;;;;;;;9744:25:6;;;9817:4;9805:17;;9785:18;;;9778:45;;;;9839:18;;;9832:34;;;9882:18;;;9875:34;;;737:60:3;;-1:-1:-1;737:60:3;;-1:-1:-1;737:60:3;-1:-1:-1;814:31:3;;9716:19:6;;814:31:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;814:31:3;;-1:-1:-1;;814:31:3;;;546:306;-1:-1:-1;;;;;;;;546:306:3:o;5184:745:5:-;2019:11;;:35;;-1:-1:-1;;;2019:35:5;;-1:-1:-1;;;;;7330:32:6;;;2019:35:5;;;7312:51:6;5342:8:5;;2001:15;;2019:11;;;:25;;7285:18:6;;2019:35:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2001:53;;2072:22;2086:7;2072:13;:22::i;:::-;2064:57;;;;-1:-1:-1;;;2064:57:5;;;;;;;:::i;:::-;5384:11:::1;::::0;:35:::1;::::0;-1:-1:-1;;;5384:35:5;;-1:-1:-1;;;;;7330:32:6;;;5384:35:5::1;::::0;::::1;7312:51:6::0;5366:15:5::1;::::0;5384:11:::1;::::0;:25:::1;::::0;7285:18:6;;5384:35:5::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5366:53;;608:5;5437;:30;;;5429:66;;;::::0;-1:-1:-1;;;5429:66:5;;12681:2:6;5429:66:5::1;::::0;::::1;12663:21:6::0;12720:2;12700:18;;;12693:30;-1:-1:-1;;;12739:18:6;;;12732:53;12802:18;;5429:66:5::1;12653:173:6::0;5429:66:5::1;5513:28;5525:7;5534:6;5513:11;:28::i;:::-;5505:85;;;;-1:-1:-1::0;;;5505:85:5::1;;;;;;;:::i;:::-;5602:10;5614:13:::0;5631:32:::1;5652:5;5659:3;5631:20;:32::i;:::-;-1:-1:-1::0;;;;;5697:17:5;::::1;5674:20;5697:17:::0;;;:8:::1;:17;::::0;;;;;;;:31;;;:23:::1;;:31:::0;;;;;:36;;5601:62;;-1:-1:-1;5601:62:5;;-1:-1:-1;5674:20:5;5697:36:::1;::::0;::::1;::::0;;::::1;;;-1:-1:-1::0;;;5697:36:5::1;;;;;;;;;;;;;;;;;5674:59;;5743:16;5767:6;5762:11;;:1;:11;;5743:30;;5838:8;5823:12;:23;5784:8;:17;5793:7;-1:-1:-1::0;;;;;5784:17:5::1;-1:-1:-1::0;;;;;5784:17:5::1;;;;;;;;;;;;:23;;:31;5808:6;5784:31;;;;;;;;;;;5816:3;5784:36;;;;;;;;-1:-1:-1::0;;;5784:36:5::1;;;;;;;;;;;;;;;;:62;;;;5862:60;5882:7;5891:6;5899:5;5906:7;5915:6;5862:60;;;;;;;;;;:::i;:::-;;;;;;;;2131:1;;;;;5184:745:::0;;;;;;;:::o;3039:420::-;3165:11;;:35;;-1:-1:-1;;;3165:35:5;;-1:-1:-1;;;;;7330:32:6;;;3165:35:5;;;7312:51:6;3147:15:5;;3165:11;;:25;;7285:18:6;;3165:35:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3147:53;;3219:22;3233:7;3219:13;:22::i;:::-;3218:23;3210:62;;;;-1:-1:-1;;;3210:62:5;;11086:2:6;3210:62:5;;;11068:21:6;11125:2;11105:18;;;11098:30;11164:28;11144:18;;;11137:56;11210:18;;3210:62:5;11058:176:6;3210:62:5;-1:-1:-1;;;;;3333:17:5;;3283:47;3333:17;;;:8;:17;;;;;;;;;3361:38;;-1:-1:-1;;3361:38:5;;;;;;3415:37;;;;;;3342:7;;3436;;3445:6;;3415:37;:::i;:::-;;;;;;;;3039:420;;;;;:::o;3952:685::-;2019:11;;:35;;-1:-1:-1;;;2019:35:5;;-1:-1:-1;;;;;7330:32:6;;;2019:35:5;;;7312:51:6;4089:8:5;;2001:15;;2019:11;;;:25;;7285:18:6;;2019:35:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2001:53;;2072:22;2086:7;2072:13;:22::i;:::-;2064:57;;;;-1:-1:-1;;;2064:57:5;;;;;;;:::i;:::-;4127:11:::1;::::0;:35:::1;::::0;-1:-1:-1;;;4127:35:5;;-1:-1:-1;;;;;7330:32:6;;;4127:35:5::1;::::0;::::1;7312:51:6::0;4109:15:5::1;::::0;4127:11:::1;::::0;:25:::1;::::0;7285:18:6;;4127:35:5::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4109:53;;4181:28;4193:7;4202:6;4181:11;:28::i;:::-;4180:29;4172:85;;;::::0;-1:-1:-1;;;4172:85:5;;11441:2:6;4172:85:5::1;::::0;::::1;11423:21:6::0;11480:2;11460:18;;;11453:30;11519:34;11499:18;;;11492:62;-1:-1:-1;;;11570:18:6;;;11563:41;11621:19;;4172:85:5::1;11413:233:6::0;4172:85:5::1;-1:-1:-1::0;;;;;4318:17:5;::::1;4268:47;4318:17:::0;;;:8:::1;:17;::::0;;;;;672:28:::1;697:3;608:5;672:28;:::i;:::-;4380:36;;;;;;-1:-1:-1::0;;;4380:36:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;4380:36:5::1;-1:-1:-1::0;4427:34:5::1;::::0;;;:26:::1;::::0;::::1;:34;::::0;;;;;;;:41;;-1:-1:-1;;4427:41:5::1;4464:4;4427:41;::::0;;4478:20:::1;::::0;::::1;:28:::0;;;;;:45;;4346:70;;-1:-1:-1;4478:45:5::1;::::0;:28;;:45;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;4533:25:5::1;::::0;::::1;:27:::0;;;:25:::1;:27;::::0;::::1;:::i;:::-;;;;;;4576:54;4597:7;4606:6;4614:7;4623:6;4576:54;;;;;;;;;:::i;:::-;;;;;;;;2131:1;;;3952:685:::0;;;;;;:::o;2307:319::-;2404:6;2412;2449:7;2438:18;;:8;:18;;;2434:69;;;-1:-1:-1;2480:1:5;;-1:-1:-1;2483:8:5;2472:20;;2434:69;2513:10;2526:18;2537:7;2526:8;:18;:::i;:::-;2513:31;-1:-1:-1;2554:13:5;2570:18;2581:7;2570:8;:18;:::i;:::-;2607:3;;-1:-1:-1;2554:34:5;;-1:-1:-1;;2307:319:5;;;;;;:::o;331:172::-;386:5;419:6;411:5;:14;403:64;;;;-1:-1:-1;;;403:64:5;;10680:2:6;403:64:5;;;10662:21:6;10719:2;10699:18;;;10692:30;10758:34;10738:18;;;10731:62;-1:-1:-1;;;10809:18:6;;;10802:35;10854:19;;403:64:5;10652:227:6;403:64:5;-1:-1:-1;490:5:5;331:172::o;211:329:3:-;289:9;300;311:7;338:3;:10;352:2;338:16;330:53;;;;-1:-1:-1;;;330:53:3;;13033:2:6;330:53:3;;;13015:21:6;13072:2;13052:18;;;13045:30;13111:26;13091:18;;;13084:54;13155:18;;330:53:3;13005:174:6;330:53:3;-1:-1:-1;;;437:2:3;428:12;;422:19;474:2;465:12;;459:19;519:2;510:12;;;504:19;422;;501:1;496:28;;;;;403:131::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:738:6;56:5;109:3;102:4;94:6;90:17;86:27;76:2;;131:5;124;117:20;76:2;171:6;158:20;197:18;234:2;230;227:10;224:2;;;240:18;;:::i;:::-;315:2;309:9;283:2;369:13;;-1:-1:-1;;365:22:6;;;389:2;361:31;357:40;345:53;;;413:18;;;433:22;;;410:46;407:2;;;459:18;;:::i;:::-;499:10;495:2;488:22;534:2;526:6;519:18;580:3;573:4;568:2;560:6;556:15;552:26;549:35;546:2;;;601:5;594;587:20;546:2;669;662:4;654:6;650:17;643:4;635:6;631:17;618:54;692:15;;;709:4;688:26;681:41;;;;-1:-1:-1;696:6:6;66:686;-1:-1:-1;;;66:686:6:o;757:163::-;824:20;;884:10;873:22;;863:33;;853:2;;910:1;907;900:12;853:2;805:115;;;:::o;925:257::-;984:6;1037:2;1025:9;1016:7;1012:23;1008:32;1005:2;;;1058:6;1050;1043:22;1005:2;1102:9;1089:23;1121:31;1146:5;1121:31;:::i;:::-;1171:5;995:187;-1:-1:-1;;;995:187:6:o;1187:261::-;1257:6;1310:2;1298:9;1289:7;1285:23;1281:32;1278:2;;;1331:6;1323;1316:22;1278:2;1368:9;1362:16;1387:31;1412:5;1387:31;:::i;1453:325::-;1521:6;1529;1582:2;1570:9;1561:7;1557:23;1553:32;1550:2;;;1603:6;1595;1588:22;1550:2;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;1768:2;1753:18;;;;1740:32;;-1:-1:-1;;;1540:238:6:o;1783:397::-;1859:6;1867;1875;1928:2;1916:9;1907:7;1903:23;1899:32;1896:2;;;1949:6;1941;1934:22;1896:2;1993:9;1980:23;2012:31;2037:5;2012:31;:::i;:::-;2062:5;-1:-1:-1;2114:2:6;2099:18;;2086:32;;-1:-1:-1;2137:37:6;2170:2;2155:18;;2137:37;:::i;:::-;2127:47;;1886:294;;;;;:::o;2185:571::-;2273:6;2281;2334:2;2322:9;2313:7;2309:23;2305:32;2302:2;;;2355:6;2347;2340:22;2302:2;2400:9;2387:23;2429:18;2470:2;2462:6;2459:14;2456:2;;;2491:6;2483;2476:22;2456:2;2519:49;2560:7;2551:6;2540:9;2536:22;2519:49;:::i;:::-;2509:59;;2621:2;2610:9;2606:18;2593:32;2577:48;;2650:2;2640:8;2637:16;2634:2;;;2671:6;2663;2656:22;2634:2;;2699:51;2742:7;2731:8;2720:9;2716:24;2699:51;:::i;:::-;2689:61;;;2292:464;;;;;:::o;2761:779::-;2867:6;2875;2883;2936:2;2924:9;2915:7;2911:23;2907:32;2904:2;;;2957:6;2949;2942:22;2904:2;3002:9;2989:23;3031:18;3072:2;3064:6;3061:14;3058:2;;;3093:6;3085;3078:22;3058:2;3121:49;3162:7;3153:6;3142:9;3138:22;3121:49;:::i;:::-;3111:59;;3223:2;3212:9;3208:18;3195:32;3179:48;;3252:2;3242:8;3239:16;3236:2;;;3273:6;3265;3258:22;3236:2;3301:51;3344:7;3333:8;3322:9;3318:24;3301:51;:::i;:::-;3291:61;;3405:2;3394:9;3390:18;3377:32;3361:48;;3434:2;3424:8;3421:16;3418:2;;;3455:6;3447;3440:22;3418:2;;3483:51;3526:7;3515:8;3504:9;3500:24;3483:51;:::i;:::-;3473:61;;;2894:646;;;;;:::o;3545:639::-;3642:6;3650;3658;3711:2;3699:9;3690:7;3686:23;3682:32;3679:2;;;3732:6;3724;3717:22;3679:2;3773:9;3760:23;3750:33;;3834:2;3823:9;3819:18;3806:32;3857:18;3898:2;3890:6;3887:14;3884:2;;;3919:6;3911;3904:22;4189:848;4304:6;4312;4320;4328;4381:3;4369:9;4360:7;4356:23;4352:33;4349:2;;;4403:6;4395;4388:22;4349:2;4444:9;4431:23;4421:33;;4505:2;4494:9;4490:18;4477:32;4528:18;4569:2;4561:6;4558:14;4555:2;;;4590:6;4582;4575:22;4555:2;4618:49;4659:7;4650:6;4639:9;4635:22;4618:49;:::i;:::-;4608:59;;4720:2;4709:9;4705:18;4692:32;4676:48;;4749:2;4739:8;4736:16;4733:2;;;4770:6;4762;4755:22;4733:2;4798:51;4841:7;4830:8;4819:9;4815:24;4798:51;:::i;:::-;4788:61;;4902:2;4891:9;4887:18;4874:32;4858:48;;4931:2;4921:8;4918:16;4915:2;;;4952:6;4944;4937:22;4915:2;;4980:51;5023:7;5012:8;5001:9;4997:24;4980:51;:::i;:::-;4970:61;;;4339:698;;;;;;;:::o;5042:712::-;5147:6;5155;5163;5171;5224:3;5212:9;5203:7;5199:23;5195:33;5192:2;;;5246:6;5238;5231:22;5192:2;5287:9;5274:23;5264:33;;5316:37;5349:2;5338:9;5334:18;5316:37;:::i;:::-;5306:47;;5404:2;5393:9;5389:18;5376:32;5427:18;5468:2;5460:6;5457:14;5454:2;;;5489:6;5481;5474:22;5759:921;5882:6;5890;5898;5906;5914;5967:3;5955:9;5946:7;5942:23;5938:33;5935:2;;;5989:6;5981;5974:22;5935:2;6030:9;6017:23;6007:33;;6059:37;6092:2;6081:9;6077:18;6059:37;:::i;:::-;6049:47;;6147:2;6136:9;6132:18;6119:32;6170:18;6211:2;6203:6;6200:14;6197:2;;;6232:6;6224;6217:22;6197:2;6260:49;6301:7;6292:6;6281:9;6277:22;6260:49;:::i;:::-;6250:59;;6362:2;6351:9;6347:18;6334:32;6318:48;;6391:2;6381:8;6378:16;6375:2;;;6412:6;6404;6397:22;6375:2;6440:51;6483:7;6472:8;6461:9;6457:24;6440:51;:::i;:::-;6430:61;;6544:3;6533:9;6529:19;6516:33;6500:49;;6574:2;6564:8;6561:16;6558:2;;;6595:6;6587;6580:22;6558:2;;6623:51;6666:7;6655:8;6644:9;6640:24;6623:51;:::i;:::-;6613:61;;;5925:755;;;;;;;;:::o;6685:476::-;6727:3;6765:5;6759:12;6792:6;6787:3;6780:19;6817:3;6829:162;6843:6;6840:1;6837:13;6829:162;;;6905:4;6961:13;;;6957:22;;6951:29;6933:11;;;6929:20;;6922:59;6858:12;6829:162;;;7009:6;7006:1;7003:13;7000:2;;;7075:3;7068:4;7059:6;7054:3;7050:16;7046:27;7039:40;7000:2;-1:-1:-1;7143:2:6;7122:15;-1:-1:-1;;7118:29:6;7109:39;;;;7150:4;7105:50;;6735:426;-1:-1:-1;;6735:426:6:o;7374:480::-;-1:-1:-1;;;;;7599:32:6;;7581:51;;7668:2;7663;7648:18;;7641:30;;;-1:-1:-1;;7694:45:6;;7720:18;;7712:6;7694:45;:::i;:::-;7787:9;7779:6;7775:22;7770:2;7759:9;7755:18;7748:50;7815:33;7841:6;7833;7815:33;:::i;:::-;7807:41;7571:283;-1:-1:-1;;;;;;7571:283:6:o;7859:553::-;8141:1;8137;8132:3;8128:11;8124:19;8116:6;8112:32;8101:9;8094:51;8181:6;8176:2;8165:9;8161:18;8154:34;8224:3;8219:2;8208:9;8204:18;8197:31;8075:4;8251:46;8292:3;8281:9;8277:19;8269:6;8251:46;:::i;:::-;8345:9;8337:6;8333:22;8328:2;8317:9;8313:18;8306:50;8373:33;8399:6;8391;8373:33;:::i;:::-;8365:41;8084:328;-1:-1:-1;;;;;;;8084:328:6:o;8417:640::-;8725:1;8721;8716:3;8712:11;8708:19;8700:6;8696:32;8685:9;8678:51;8765:6;8760:2;8749:9;8745:18;8738:34;8820:10;8812:6;8808:23;8803:2;8792:9;8788:18;8781:51;8868:3;8863:2;8852:9;8848:18;8841:31;8659:4;8895:46;8936:3;8925:9;8921:19;8913:6;8895:46;:::i;:::-;8990:9;8982:6;8978:22;8972:3;8961:9;8957:19;8950:51;9018:33;9044:6;9036;9018:33;:::i;11651:408::-;11853:2;11835:21;;;11892:2;11872:18;;;11865:30;11931:34;11926:2;11911:18;;11904:62;-1:-1:-1;;;11997:2:6;11982:18;;11975:42;12049:3;12034:19;;11825:234::o;13184:346::-;13386:2;13368:21;;;13425:2;13405:18;;;13398:30;-1:-1:-1;;;13459:2:6;13444:18;;13437:52;13521:2;13506:18;;13358:172::o;13906:120::-;13946:1;13972;13962:2;;13977:18;;:::i;:::-;-1:-1:-1;14011:9:6;;13952:74::o;14031:191::-;14070:1;14096:10;14133:2;14130:1;14126:10;14155:3;14145:2;;14162:18;;:::i;:::-;14200:10;;14196:20;;;;;14076:146;-1:-1:-1;;14076:146:6:o;14227:236::-;14266:3;-1:-1:-1;;14287:17:6;;14284:2;;;-1:-1:-1;;;14327:33:6;;14383:4;14380:1;14373:15;14413:4;14334:3;14401:17;14284:2;-1:-1:-1;14455:1:6;14444:13;;14274:189::o;14468:183::-;14499:1;14525:10;14562:2;14559:1;14555:10;14584:3;14574:2;;14591:18;;:::i;:::-;14629:10;;14625:20;;;;;14505:146;-1:-1:-1;;14505:146:6:o;14656:127::-;14717:10;14712:3;14708:20;14705:1;14698:31;14748:4;14745:1;14738:15;14772:4;14769:1;14762:15;14788:127;14849:10;14844:3;14840:20;14837:1;14830:31;14880:4;14877:1;14870:15;14904:4;14901:1;14894:15;14920:131;-1:-1:-1;;;;;14995:31:6;;14985:42;;14975:2;;15041:1;15038;15031:12",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.4;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@verii/permissions-contract/contracts/Permissions.sol\";\nimport \"@verii/signature-verification-library/libraries/SignatureVerification.sol\";\n\nlibrary SafeCast {\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        require(value < 2 ** 8, \"SafeCast: value doesn't fit in 8 bits\");\n        return uint8(value);\n    }\n}\n\ncontract RevocationRegistry is Initializable {\n    uint256 private constant REVOCATION_LIST_LENGTH = 10240;\n    uint256 private constant REVOCATION_ARRAY_SIZE =\n    REVOCATION_LIST_LENGTH / 256;\n\n    struct WalletRevocationRegistry {\n        bool walletInRegistry;\n        uint256 totalLists;\n        mapping(uint256 => bool) listIdUsage;\n        mapping(uint256 => uint256[]) lists;\n    }\n\n    mapping(address => WalletRevocationRegistry) public registry;\n\n    Permissions internal permissions;\n\n    modifier onlyVnf() {\n        require(msg.sender == permissions.getVNF(), \"Permissions: caller is not VNF\");\n        _;\n    }\n\n    event WalletAdded(address wallet, string traceId, string caoDid);\n    event RevocationListCreate(address wallet, uint256 listId, string traceId, string caoDid);\n    event RevokedStatusUpdate(address owner, uint256 listId, uint32 index, string traceId, string caoDid);\n\n    function initialize() public initializer {}\n\n    function setPermissionsAddress(address _permissions) public {\n        require(address(permissions) == address(0) || msg.sender == permissions.getVNF(), 'Permissions: caller is not VNF');\n        permissions = Permissions(_permissions);\n    }\n\n    function getPermissionsAddress() public view returns (address) {\n        return address(permissions);\n    }\n\n    function isWalletExist(address wallet) public view returns (bool) {\n        return registry[wallet].walletInRegistry;\n    }\n\n    modifier existingWallet(address operator) {\n        address primary = permissions.checkOperator(operator);\n        require(isWalletExist(primary), \"wallet not in registry\");\n        _;\n    }\n\n    function isListExist(address wallet, uint256 listId)\n    public\n    view\n    returns (bool)\n    {\n        return registry[wallet].listIdUsage[listId];\n    }\n\n    function getPositionAndOffset(uint32 position, uint32 divider)\n    private\n    pure\n    returns (uint32, uint32)\n    {\n        if (position < divider) {\n            return (0, position);\n        }\n\n        uint32 pos = position / divider;\n        uint32 offset = position % divider;\n\n        return (pos, offset);\n    }\n\n    function addWallet(string memory traceId, string memory caoDid) public {\n        addWalletInternal(traceId, caoDid, msg.sender);\n    }\n\n    function addWalletSigned(string memory traceId, string memory caoDid, bytes memory signature) public {\n        address operator = SignatureVerification.recoverSigner(abi.encode(msg.sender), signature);\n        addWalletInternal(traceId, caoDid, operator);\n    }\n\n    function addWalletInternal(string memory traceId, string memory caoDid, address operator) private {\n        address primary = permissions.checkOperator(operator);\n        require(!isWalletExist(primary), \"wallet already in registry\");\n\n        WalletRevocationRegistry storage walletRegistry = registry[primary];\n\n        walletRegistry.walletInRegistry = true;\n\n        emit WalletAdded(primary, traceId, caoDid);\n    }\n\n    function addRevocationList(uint256 listId, string memory traceId, string memory caoDid) public {\n        addRevocationListInternal(listId, traceId, caoDid, msg.sender);\n    }\n\n    function addRevocationListSigned(uint256 listId, string memory traceId, string memory caoDid, bytes memory signature) public {\n        address operator = SignatureVerification.recoverSigner(abi.encode(msg.sender), signature);\n        addRevocationListInternal(listId, traceId, caoDid, operator);\n    }\n\n    function addRevocationListInternal(uint256 listId, string memory traceId, string memory caoDid, address operator) private existingWallet(operator) {\n        address primary = permissions.checkOperator(operator);\n        require(!isListExist(primary, listId), \"revocation list with given id already exist\");\n\n        WalletRevocationRegistry storage walletRegistry = registry[primary];\n\n        uint256[] memory revocationList = new uint256[](REVOCATION_ARRAY_SIZE);\n\n        walletRegistry.listIdUsage[listId] = true;\n        walletRegistry.lists[listId] = revocationList;\n        walletRegistry.totalLists++;\n\n        emit RevocationListCreate(primary, listId, traceId, caoDid);\n    }\n\n    function setRevokedStatus(uint256 listId, uint32 index, string memory traceId, string memory caoDid)\n    public\n    {\n        setRevokedStatusInternal(listId, index, traceId, caoDid, msg.sender);\n    }\n\n    function setRevokedStatusSigned(uint256 listId, uint32 index, string memory traceId, string memory caoDid, bytes memory signature)\n    public\n    {\n        address operator = SignatureVerification.recoverSigner(abi.encode(msg.sender), signature);\n        setRevokedStatusInternal(listId, index, traceId, caoDid, operator);\n    }\n\n    function setRevokedStatusInternal(uint256 listId, uint32 index, string memory traceId, string memory caoDid, address operator)\n    private\n    existingWallet(operator)\n    {\n        address primary = permissions.checkOperator(operator);\n        require(index < REVOCATION_LIST_LENGTH, \"list index out of bound\");\n        require(isListExist(primary, listId), \"revocation list with given id does not exist\");\n\n        (uint32 pos, uint32 offset) = getPositionAndOffset(index, 256);\n\n        uint256 currentValue = registry[primary].lists[listId][pos];\n        uint256 bitValue = 1 << offset;\n\n        registry[primary].lists[listId][pos] = currentValue | bitValue;\n\n        emit RevokedStatusUpdate(primary, listId, index, traceId, caoDid);\n    }\n\n    function getRevokedStatus(\n        address wallet,\n        uint256 listId,\n        uint32 index\n    ) public view returns (uint8 revokedStatus) {\n\n        require(index < REVOCATION_LIST_LENGTH, \"list index out of bound\");\n        require(isWalletExist(wallet), \"wallet not in registry\");\n        require(isListExist(wallet, listId), \"revocation list with given id does not exist\");\n\n        (uint32 pos, uint32 offset) = getPositionAndOffset(index, 256);\n\n        uint256 mask = 1 << offset;\n        uint256 maskedValue = registry[wallet].lists[listId][pos] & mask;\n        revokedStatus = SafeCast.toUint8(maskedValue >> offset);\n\n        return revokedStatus;\n    }\n\n    function getRevocationListCount()\n    external\n    view\n    existingWallet(msg.sender)\n    returns (uint256)\n    {\n        address primary = permissions.checkOperator(msg.sender);\n        return registry[primary].totalLists;\n    }\n}\n",
  "sourcePath": "/Users/nassan/s/vclworld/monorepo/contracts/revocation-list/contracts/RevocationRegistry.sol",
  "ast": {
    "absolutePath": "project:/contracts/RevocationRegistry.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        498
      ],
      "Initializable": [
        168
      ],
      "Permissions": [
        1358
      ],
      "RevocationRegistry": [
        2151
      ],
      "SafeCast": [
        1488
      ],
      "SignatureVerification": [
        1427
      ]
    },
    "id": 2152,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1462,
        "literals": [
          "solidity",
          "0.8",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:22:5"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "id": 1463,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2152,
        "sourceUnit": 169,
        "src": "57:75:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@verii/permissions-contract/contracts/Permissions.sol",
        "file": "@verii/permissions-contract/contracts/Permissions.sol",
        "id": 1464,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2152,
        "sourceUnit": 1359,
        "src": "133:76:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@verii/signature-verification-library/libraries/SignatureVerification.sol",
        "file": "@verii/signature-verification-library/libraries/SignatureVerification.sol",
        "id": 1465,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 2152,
        "sourceUnit": 1428,
        "src": "210:96:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "id": 1488,
        "linearizedBaseContracts": [
          1488
        ],
        "name": "SafeCast",
        "nameLocation": "316:8:5",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1486,
              "nodeType": "Block",
              "src": "393:110:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1473,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1467,
                          "src": "411:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "id": 1476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "32",
                            "id": 1474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "419:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "hexValue": "38",
                            "id": 1475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "424:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "419:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          }
                        },
                        "src": "411:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473",
                        "id": 1478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "427:39:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1",
                          "typeString": "literal_string \"SafeCast: value doesn't fit in 8 bits\""
                        },
                        "value": "SafeCast: value doesn't fit in 8 bits"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1",
                          "typeString": "literal_string \"SafeCast: value doesn't fit in 8 bits\""
                        }
                      ],
                      "id": 1472,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "403:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "403:64:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1480,
                  "nodeType": "ExpressionStatement",
                  "src": "403:64:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1483,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1467,
                        "src": "490:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1482,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "484:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": {
                        "id": 1481,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "484:5:5",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "484:12:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 1471,
                  "id": 1485,
                  "nodeType": "Return",
                  "src": "477:19:5"
                }
              ]
            },
            "id": 1487,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toUint8",
            "nameLocation": "340:7:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1467,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "356:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1487,
                  "src": "348:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1466,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "348:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "347:15:5"
            },
            "returnParameters": {
              "id": 1471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1470,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1487,
                  "src": "386:5:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1469,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "386:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "385:7:5"
            },
            "scope": 1488,
            "src": "331:172:5",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 2152,
        "src": "308:197:5",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 1489,
              "name": "Initializable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 168,
              "src": "538:13:5"
            },
            "id": 1490,
            "nodeType": "InheritanceSpecifier",
            "src": "538:13:5"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 2151,
        "linearizedBaseContracts": [
          2151,
          168
        ],
        "name": "RevocationRegistry",
        "nameLocation": "516:18:5",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1493,
            "mutability": "constant",
            "name": "REVOCATION_LIST_LENGTH",
            "nameLocation": "583:22:5",
            "nodeType": "VariableDeclaration",
            "scope": 2151,
            "src": "558:55:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1491,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "558:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "3130323430",
              "id": 1492,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "608:5:5",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_10240_by_1",
                "typeString": "int_const 10240"
              },
              "value": "10240"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1498,
            "mutability": "constant",
            "name": "REVOCATION_ARRAY_SIZE",
            "nameLocation": "644:21:5",
            "nodeType": "VariableDeclaration",
            "scope": 2151,
            "src": "619:81:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1494,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "619:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "commonType": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "id": 1497,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "id": 1495,
                "name": "REVOCATION_LIST_LENGTH",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 1493,
                "src": "672:22:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "BinaryOperation",
              "operator": "/",
              "rightExpression": {
                "hexValue": "323536",
                "id": 1496,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "697:3:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_256_by_1",
                  "typeString": "int_const 256"
                },
                "value": "256"
              },
              "src": "672:28:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "private"
          },
          {
            "canonicalName": "RevocationRegistry.WalletRevocationRegistry",
            "id": 1512,
            "members": [
              {
                "constant": false,
                "id": 1500,
                "mutability": "mutable",
                "name": "walletInRegistry",
                "nameLocation": "754:16:5",
                "nodeType": "VariableDeclaration",
                "scope": 1512,
                "src": "749:21:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 1499,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "749:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1502,
                "mutability": "mutable",
                "name": "totalLists",
                "nameLocation": "788:10:5",
                "nodeType": "VariableDeclaration",
                "scope": 1512,
                "src": "780:18:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1501,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "780:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1506,
                "mutability": "mutable",
                "name": "listIdUsage",
                "nameLocation": "833:11:5",
                "nodeType": "VariableDeclaration",
                "scope": 1512,
                "src": "808:36:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                  "typeString": "mapping(uint256 => bool)"
                },
                "typeName": {
                  "id": 1505,
                  "keyType": {
                    "id": 1503,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "816:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "808:24:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                    "typeString": "mapping(uint256 => bool)"
                  },
                  "valueType": {
                    "id": 1504,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "827:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1511,
                "mutability": "mutable",
                "name": "lists",
                "nameLocation": "884:5:5",
                "nodeType": "VariableDeclaration",
                "scope": 1512,
                "src": "854:35:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$",
                  "typeString": "mapping(uint256 => uint256[])"
                },
                "typeName": {
                  "id": 1510,
                  "keyType": {
                    "id": 1507,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "862:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "854:29:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$",
                    "typeString": "mapping(uint256 => uint256[])"
                  },
                  "valueType": {
                    "baseType": {
                      "id": 1508,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "873:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1509,
                    "nodeType": "ArrayTypeName",
                    "src": "873:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "WalletRevocationRegistry",
            "nameLocation": "714:24:5",
            "nodeType": "StructDefinition",
            "scope": 2151,
            "src": "707:189:5",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "038defd7",
            "id": 1517,
            "mutability": "mutable",
            "name": "registry",
            "nameLocation": "954:8:5",
            "nodeType": "VariableDeclaration",
            "scope": 2151,
            "src": "902:60:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
              "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry)"
            },
            "typeName": {
              "id": 1516,
              "keyType": {
                "id": 1513,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "910:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "902:44:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry)"
              },
              "valueType": {
                "id": 1515,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1514,
                  "name": "WalletRevocationRegistry",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1512,
                  "src": "921:24:5"
                },
                "referencedDeclaration": 1512,
                "src": "921:24:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                  "typeString": "struct RevocationRegistry.WalletRevocationRegistry"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1520,
            "mutability": "mutable",
            "name": "permissions",
            "nameLocation": "990:11:5",
            "nodeType": "VariableDeclaration",
            "scope": 2151,
            "src": "969:32:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Permissions_$1358",
              "typeString": "contract Permissions"
            },
            "typeName": {
              "id": 1519,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 1518,
                "name": "Permissions",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 1358,
                "src": "969:11:5"
              },
              "referencedDeclaration": 1358,
              "src": "969:11:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Permissions_$1358",
                "typeString": "contract Permissions"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1533,
              "nodeType": "Block",
              "src": "1027:105:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 1523,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "1045:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1045:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1525,
                              "name": "permissions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1520,
                              "src": "1059:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Permissions_$1358",
                                "typeString": "contract Permissions"
                              }
                            },
                            "id": 1526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVNF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 628,
                            "src": "1059:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 1527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1059:20:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1045:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e46",
                        "id": 1529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1081:32:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        },
                        "value": "Permissions: caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        }
                      ],
                      "id": 1522,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1037:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1037:77:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1531,
                  "nodeType": "ExpressionStatement",
                  "src": "1037:77:5"
                },
                {
                  "id": 1532,
                  "nodeType": "PlaceholderStatement",
                  "src": "1124:1:5"
                }
              ]
            },
            "id": 1534,
            "name": "onlyVnf",
            "nameLocation": "1017:7:5",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1024:2:5"
            },
            "src": "1008:124:5",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "id": 1542,
            "name": "WalletAdded",
            "nameLocation": "1144:11:5",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1541,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1536,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "1164:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1542,
                  "src": "1156:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1535,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1156:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1538,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "1179:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1542,
                  "src": "1172:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1537,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1172:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1540,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "1195:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1542,
                  "src": "1188:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1539,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1188:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1155:47:5"
            },
            "src": "1138:65:5"
          },
          {
            "anonymous": false,
            "id": 1552,
            "name": "RevocationListCreate",
            "nameLocation": "1214:20:5",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1544,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "1243:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1552,
                  "src": "1235:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1543,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1235:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1546,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "1259:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1552,
                  "src": "1251:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1545,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1251:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1548,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "1274:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1552,
                  "src": "1267:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1547,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1267:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1550,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "1290:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1552,
                  "src": "1283:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1549,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1283:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1234:63:5"
            },
            "src": "1208:90:5"
          },
          {
            "anonymous": false,
            "id": 1564,
            "name": "RevokedStatusUpdate",
            "nameLocation": "1309:19:5",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1563,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1554,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1337:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1564,
                  "src": "1329:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1553,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1329:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1556,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "1352:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1564,
                  "src": "1344:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1555,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1344:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1558,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1367:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1564,
                  "src": "1360:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1557,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1360:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1560,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "1381:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1564,
                  "src": "1374:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1559,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1374:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1562,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "1397:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1564,
                  "src": "1390:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1561,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1390:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1328:76:5"
            },
            "src": "1303:102:5"
          },
          {
            "body": {
              "id": 1569,
              "nodeType": "Block",
              "src": "1452:2:5",
              "statements": []
            },
            "functionSelector": "8129fc1c",
            "id": 1570,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1567,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1566,
                  "name": "initializer",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 70,
                  "src": "1440:11:5"
                },
                "nodeType": "ModifierInvocation",
                "src": "1440:11:5"
              }
            ],
            "name": "initialize",
            "nameLocation": "1420:10:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1565,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1430:2:5"
            },
            "returnParameters": {
              "id": 1568,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1452:0:5"
            },
            "scope": 2151,
            "src": "1411:43:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1601,
              "nodeType": "Block",
              "src": "1520:181:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 1578,
                                "name": "permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1520,
                                "src": "1546:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Permissions_$1358",
                                  "typeString": "contract Permissions"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Permissions_$1358",
                                  "typeString": "contract Permissions"
                                }
                              ],
                              "id": 1577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1538:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1576,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1538:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1538:20:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1570:1:5",
                                "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": 1581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1562:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1580,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1562:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1562:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1538:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1585,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "1576:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "1576:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 1587,
                                "name": "permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1520,
                                "src": "1590:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Permissions_$1358",
                                  "typeString": "contract Permissions"
                                }
                              },
                              "id": 1588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVNF",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 628,
                              "src": "1590:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 1589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1590:20:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1576:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1538:72:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e46",
                        "id": 1592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1612:32:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        },
                        "value": "Permissions: caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        }
                      ],
                      "id": 1575,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1530:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1530:115:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1594,
                  "nodeType": "ExpressionStatement",
                  "src": "1530:115:5"
                },
                {
                  "expression": {
                    "id": 1599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1595,
                      "name": "permissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1520,
                      "src": "1655:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Permissions_$1358",
                        "typeString": "contract Permissions"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1597,
                          "name": "_permissions",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1572,
                          "src": "1681:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1596,
                        "name": "Permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1358,
                        "src": "1669:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Permissions_$1358_$",
                          "typeString": "type(contract Permissions)"
                        }
                      },
                      "id": 1598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1669:25:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Permissions_$1358",
                        "typeString": "contract Permissions"
                      }
                    },
                    "src": "1655:39:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Permissions_$1358",
                      "typeString": "contract Permissions"
                    }
                  },
                  "id": 1600,
                  "nodeType": "ExpressionStatement",
                  "src": "1655:39:5"
                }
              ]
            },
            "functionSelector": "fb5e3c25",
            "id": 1602,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPermissionsAddress",
            "nameLocation": "1469:21:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1572,
                  "mutability": "mutable",
                  "name": "_permissions",
                  "nameLocation": "1499:12:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1602,
                  "src": "1491:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1571,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1491:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1490:22:5"
            },
            "returnParameters": {
              "id": 1574,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1520:0:5"
            },
            "scope": 2151,
            "src": "1460:241:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1612,
              "nodeType": "Block",
              "src": "1770:44:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1609,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1520,
                        "src": "1795:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$1358",
                          "typeString": "contract Permissions"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Permissions_$1358",
                          "typeString": "contract Permissions"
                        }
                      ],
                      "id": 1608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1787:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 1607,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1787:7:5",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1787:20:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1606,
                  "id": 1611,
                  "nodeType": "Return",
                  "src": "1780:27:5"
                }
              ]
            },
            "functionSelector": "a3b3cfbc",
            "id": 1613,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPermissionsAddress",
            "nameLocation": "1716:21:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1603,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1737:2:5"
            },
            "returnParameters": {
              "id": 1606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1605,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1613,
                  "src": "1761:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1604,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1761:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1760:9:5"
            },
            "scope": 2151,
            "src": "1707:107:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1625,
              "nodeType": "Block",
              "src": "1886:57:5",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "baseExpression": {
                        "id": 1620,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1517,
                        "src": "1903:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                          "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                        }
                      },
                      "id": 1622,
                      "indexExpression": {
                        "id": 1621,
                        "name": "wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1615,
                        "src": "1912:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1903:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                        "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                      }
                    },
                    "id": 1623,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "walletInRegistry",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1500,
                    "src": "1903:33:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1619,
                  "id": 1624,
                  "nodeType": "Return",
                  "src": "1896:40:5"
                }
              ]
            },
            "functionSelector": "f97cbecd",
            "id": 1626,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isWalletExist",
            "nameLocation": "1829:13:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1615,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "1851:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1626,
                  "src": "1843:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1614,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1843:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1842:16:5"
            },
            "returnParameters": {
              "id": 1619,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1618,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1626,
                  "src": "1880:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1617,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1880:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1879:6:5"
            },
            "scope": 2151,
            "src": "1820:123:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1645,
              "nodeType": "Block",
              "src": "1991:148:5",
              "statements": [
                {
                  "assignments": [
                    1631
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1631,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "2009:7:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1645,
                      "src": "2001:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1630,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2001:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1636,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1634,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1628,
                        "src": "2045:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 1632,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1520,
                        "src": "2019:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$1358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 1633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 939,
                      "src": "2019:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 1635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2019:35:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2001:53:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1639,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1631,
                            "src": "2086:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1638,
                          "name": "isWalletExist",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1626,
                          "src": "2072:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 1640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2072:22:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "77616c6c6574206e6f7420696e207265676973747279",
                        "id": 1641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2096:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e127075bc2e60c80f7cd16779420f4912fc98f666ab206ab072530c17556ffaf",
                          "typeString": "literal_string \"wallet not in registry\""
                        },
                        "value": "wallet not in registry"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e127075bc2e60c80f7cd16779420f4912fc98f666ab206ab072530c17556ffaf",
                          "typeString": "literal_string \"wallet not in registry\""
                        }
                      ],
                      "id": 1637,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2064:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2064:57:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1643,
                  "nodeType": "ExpressionStatement",
                  "src": "2064:57:5"
                },
                {
                  "id": 1644,
                  "nodeType": "PlaceholderStatement",
                  "src": "2131:1:5"
                }
              ]
            },
            "id": 1646,
            "name": "existingWallet",
            "nameLocation": "1958:14:5",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1628,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "1981:8:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1646,
                  "src": "1973:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1627,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1973:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1972:18:5"
            },
            "src": "1949:190:5",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1662,
              "nodeType": "Block",
              "src": "2241:60:5",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1655,
                          "name": "registry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1517,
                          "src": "2258:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                            "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                          }
                        },
                        "id": 1657,
                        "indexExpression": {
                          "id": 1656,
                          "name": "wallet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1648,
                          "src": "2267:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2258:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                          "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                        }
                      },
                      "id": 1658,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "listIdUsage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1506,
                      "src": "2258:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                        "typeString": "mapping(uint256 => bool)"
                      }
                    },
                    "id": 1660,
                    "indexExpression": {
                      "id": 1659,
                      "name": "listId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1650,
                      "src": "2287:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2258:36:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1654,
                  "id": 1661,
                  "nodeType": "Return",
                  "src": "2251:43:5"
                }
              ]
            },
            "functionSelector": "0b3738ac",
            "id": 1663,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isListExist",
            "nameLocation": "2154:11:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1648,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "2174:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1663,
                  "src": "2166:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1647,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2166:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1650,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "2190:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1663,
                  "src": "2182:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2182:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2165:32:5"
            },
            "returnParameters": {
              "id": 1654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1653,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1663,
                  "src": "2231:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1652,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2231:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2230:6:5"
            },
            "scope": 2151,
            "src": "2145:156:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1699,
              "nodeType": "Block",
              "src": "2424:202:5",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 1676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1674,
                      "name": "position",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1665,
                      "src": "2438:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 1675,
                      "name": "divider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1667,
                      "src": "2449:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "2438:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1682,
                  "nodeType": "IfStatement",
                  "src": "2434:69:5",
                  "trueBody": {
                    "id": 1681,
                    "nodeType": "Block",
                    "src": "2458:45:5",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "30",
                              "id": 1677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2480:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 1678,
                              "name": "position",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1665,
                              "src": "2483:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "id": 1679,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2479:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint32_$",
                            "typeString": "tuple(int_const 0,uint32)"
                          }
                        },
                        "functionReturnParameters": 1673,
                        "id": 1680,
                        "nodeType": "Return",
                        "src": "2472:20:5"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1684
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1684,
                      "mutability": "mutable",
                      "name": "pos",
                      "nameLocation": "2520:3:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1699,
                      "src": "2513:10:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 1683,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2513:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1688,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 1687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1685,
                      "name": "position",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1665,
                      "src": "2526:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 1686,
                      "name": "divider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1667,
                      "src": "2537:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "2526:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2513:31:5"
                },
                {
                  "assignments": [
                    1690
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1690,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "2561:6:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1699,
                      "src": "2554:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 1689,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2554:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1694,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 1693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1691,
                      "name": "position",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1665,
                      "src": "2570:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "%",
                    "rightExpression": {
                      "id": 1692,
                      "name": "divider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1667,
                      "src": "2581:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "2570:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2554:34:5"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "id": 1695,
                        "name": "pos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1684,
                        "src": "2607:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 1696,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1690,
                        "src": "2612:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "id": 1697,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2606:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint32_$_t_uint32_$",
                      "typeString": "tuple(uint32,uint32)"
                    }
                  },
                  "functionReturnParameters": 1673,
                  "id": 1698,
                  "nodeType": "Return",
                  "src": "2599:20:5"
                }
              ]
            },
            "id": 1700,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPositionAndOffset",
            "nameLocation": "2316:20:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1665,
                  "mutability": "mutable",
                  "name": "position",
                  "nameLocation": "2344:8:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1700,
                  "src": "2337:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1664,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2337:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1667,
                  "mutability": "mutable",
                  "name": "divider",
                  "nameLocation": "2361:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1700,
                  "src": "2354:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1666,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2354:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2336:33:5"
            },
            "returnParameters": {
              "id": 1673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1670,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1700,
                  "src": "2404:6:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1669,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2404:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1672,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1700,
                  "src": "2412:6:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1671,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2412:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2403:16:5"
            },
            "scope": 2151,
            "src": "2307:319:5",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1714,
              "nodeType": "Block",
              "src": "2703:63:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1708,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1702,
                        "src": "2731:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1709,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1704,
                        "src": "2740:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 1710,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2748:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2748:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1707,
                      "name": "addWalletInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1787,
                      "src": "2713:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 1712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2713:46:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1713,
                  "nodeType": "ExpressionStatement",
                  "src": "2713:46:5"
                }
              ]
            },
            "functionSelector": "f4aa03cb",
            "id": 1715,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addWallet",
            "nameLocation": "2641:9:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1702,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "2665:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1715,
                  "src": "2651:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1701,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2651:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1704,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "2688:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1715,
                  "src": "2674:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1703,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2674:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2650:45:5"
            },
            "returnParameters": {
              "id": 1706,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2703:0:5"
            },
            "scope": 2151,
            "src": "2632:134:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1742,
              "nodeType": "Block",
              "src": "2873:160:5",
              "statements": [
                {
                  "assignments": [
                    1725
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1725,
                      "mutability": "mutable",
                      "name": "operator",
                      "nameLocation": "2891:8:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1742,
                      "src": "2883:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1724,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2883:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1735,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1730,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "2949:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2949:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1728,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "2938:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "2938:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2938:22:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 1733,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1721,
                        "src": "2962:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1726,
                        "name": "SignatureVerification",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1427,
                        "src": "2902:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignatureVerification_$1427_$",
                          "typeString": "type(library SignatureVerification)"
                        }
                      },
                      "id": 1727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1426,
                      "src": "2902:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 1734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2902:70:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2883:89:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1737,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1717,
                        "src": "3000:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1738,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1719,
                        "src": "3009:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1739,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1725,
                        "src": "3017:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1736,
                      "name": "addWalletInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1787,
                      "src": "2982:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 1740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2982:44:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1741,
                  "nodeType": "ExpressionStatement",
                  "src": "2982:44:5"
                }
              ]
            },
            "functionSelector": "318c6af9",
            "id": 1743,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addWalletSigned",
            "nameLocation": "2781:15:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1717,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "2811:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1743,
                  "src": "2797:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1716,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2797:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1719,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "2834:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1743,
                  "src": "2820:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1718,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2820:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1721,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "2855:9:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1743,
                  "src": "2842:22:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1720,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2842:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2796:69:5"
            },
            "returnParameters": {
              "id": 1723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2873:0:5"
            },
            "scope": 2151,
            "src": "2772:261:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1786,
              "nodeType": "Block",
              "src": "3137:322:5",
              "statements": [
                {
                  "assignments": [
                    1753
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1753,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "3155:7:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1786,
                      "src": "3147:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1752,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3147:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1758,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1756,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1749,
                        "src": "3191:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 1754,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1520,
                        "src": "3165:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$1358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 1755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 939,
                      "src": "3165:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 1757,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3165:35:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3147:53:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3218:23:5",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 1761,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1753,
                              "src": "3233:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1760,
                            "name": "isWalletExist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1626,
                            "src": "3219:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 1762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3219:22:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "77616c6c657420616c726561647920696e207265676973747279",
                        "id": 1764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3243:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_327478a3878fbc57eb8eb28ba9504a3113cfc19f71c3e85c69003bcdf55530da",
                          "typeString": "literal_string \"wallet already in registry\""
                        },
                        "value": "wallet already in registry"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_327478a3878fbc57eb8eb28ba9504a3113cfc19f71c3e85c69003bcdf55530da",
                          "typeString": "literal_string \"wallet already in registry\""
                        }
                      ],
                      "id": 1759,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3210:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3210:62:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1766,
                  "nodeType": "ExpressionStatement",
                  "src": "3210:62:5"
                },
                {
                  "assignments": [
                    1769
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1769,
                      "mutability": "mutable",
                      "name": "walletRegistry",
                      "nameLocation": "3316:14:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1786,
                      "src": "3283:47:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                        "typeString": "struct RevocationRegistry.WalletRevocationRegistry"
                      },
                      "typeName": {
                        "id": 1768,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1767,
                          "name": "WalletRevocationRegistry",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1512,
                          "src": "3283:24:5"
                        },
                        "referencedDeclaration": 1512,
                        "src": "3283:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                          "typeString": "struct RevocationRegistry.WalletRevocationRegistry"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1773,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1770,
                      "name": "registry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1517,
                      "src": "3333:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                        "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                      }
                    },
                    "id": 1772,
                    "indexExpression": {
                      "id": 1771,
                      "name": "primary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1753,
                      "src": "3342:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3333:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                      "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3283:67:5"
                },
                {
                  "expression": {
                    "id": 1778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 1774,
                        "name": "walletRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1769,
                        "src": "3361:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                          "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage pointer"
                        }
                      },
                      "id": 1776,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "walletInRegistry",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1500,
                      "src": "3361:31:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 1777,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3395:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3361:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1779,
                  "nodeType": "ExpressionStatement",
                  "src": "3361:38:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1781,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1753,
                        "src": "3427:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1782,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1745,
                        "src": "3436:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1783,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1747,
                        "src": "3445:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 1780,
                      "name": "WalletAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1542,
                      "src": "3415:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,string memory,string memory)"
                      }
                    },
                    "id": 1784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3415:37:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1785,
                  "nodeType": "EmitStatement",
                  "src": "3410:42:5"
                }
              ]
            },
            "id": 1787,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addWalletInternal",
            "nameLocation": "3048:17:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1745,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "3080:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1787,
                  "src": "3066:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1744,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3066:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1747,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "3103:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1787,
                  "src": "3089:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1746,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3089:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1749,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "3119:8:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1787,
                  "src": "3111:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1748,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3111:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3065:63:5"
            },
            "returnParameters": {
              "id": 1751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3137:0:5"
            },
            "scope": 2151,
            "src": "3039:420:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1804,
              "nodeType": "Block",
              "src": "3560:79:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1797,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1789,
                        "src": "3596:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1798,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1791,
                        "src": "3604:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1799,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1793,
                        "src": "3613:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 1800,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "3621:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "3621:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1796,
                      "name": "addRevocationListInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1913,
                      "src": "3570:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (uint256,string memory,string memory,address)"
                      }
                    },
                    "id": 1802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3570:62:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1803,
                  "nodeType": "ExpressionStatement",
                  "src": "3570:62:5"
                }
              ]
            },
            "functionSelector": "c86cb67a",
            "id": 1805,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addRevocationList",
            "nameLocation": "3474:17:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1789,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "3500:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1805,
                  "src": "3492:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3492:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1791,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "3522:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1805,
                  "src": "3508:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1790,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3508:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1793,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "3545:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1805,
                  "src": "3531:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1792,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3531:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3491:61:5"
            },
            "returnParameters": {
              "id": 1795,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3560:0:5"
            },
            "scope": 2151,
            "src": "3465:174:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1835,
              "nodeType": "Block",
              "src": "3770:176:5",
              "statements": [
                {
                  "assignments": [
                    1817
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1817,
                      "mutability": "mutable",
                      "name": "operator",
                      "nameLocation": "3788:8:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1835,
                      "src": "3780:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1816,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3780:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1827,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1822,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3846:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3846:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1820,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3835:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "3835:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1824,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3835:22:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 1825,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1813,
                        "src": "3859:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1818,
                        "name": "SignatureVerification",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1427,
                        "src": "3799:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignatureVerification_$1427_$",
                          "typeString": "type(library SignatureVerification)"
                        }
                      },
                      "id": 1819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1426,
                      "src": "3799:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 1826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3799:70:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3780:89:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1829,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1807,
                        "src": "3905:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1830,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1809,
                        "src": "3913:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1831,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1811,
                        "src": "3922:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1832,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1817,
                        "src": "3930:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1828,
                      "name": "addRevocationListInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1913,
                      "src": "3879:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (uint256,string memory,string memory,address)"
                      }
                    },
                    "id": 1833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3879:60:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1834,
                  "nodeType": "ExpressionStatement",
                  "src": "3879:60:5"
                }
              ]
            },
            "functionSelector": "872bf91c",
            "id": 1836,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addRevocationListSigned",
            "nameLocation": "3654:23:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1807,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "3686:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1836,
                  "src": "3678:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1806,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3678:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1809,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "3708:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1836,
                  "src": "3694:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1808,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3694:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1811,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "3731:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1836,
                  "src": "3717:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1810,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3717:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1813,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "3752:9:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1836,
                  "src": "3739:22:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1812,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3739:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3677:85:5"
            },
            "returnParameters": {
              "id": 1815,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3770:0:5"
            },
            "scope": 2151,
            "src": "3645:301:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1912,
              "nodeType": "Block",
              "src": "4099:538:5",
              "statements": [
                {
                  "assignments": [
                    1851
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1851,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "4117:7:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1912,
                      "src": "4109:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1850,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4109:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1856,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1854,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1844,
                        "src": "4153:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 1852,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1520,
                        "src": "4127:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$1358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 1853,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 939,
                      "src": "4127:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 1855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4127:35:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4109:53:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1862,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "4180:29:5",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 1859,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1851,
                              "src": "4193:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1860,
                              "name": "listId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1838,
                              "src": "4202:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1858,
                            "name": "isListExist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1663,
                            "src": "4181:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) view returns (bool)"
                            }
                          },
                          "id": 1861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4181:28:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "7265766f636174696f6e206c697374207769746820676976656e20696420616c7265616479206578697374",
                        "id": 1863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4211:45:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_345604656940a7a26e78b59706ecf8e9e51b2cea8bf82d6c20b58a199959bf51",
                          "typeString": "literal_string \"revocation list with given id already exist\""
                        },
                        "value": "revocation list with given id already exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_345604656940a7a26e78b59706ecf8e9e51b2cea8bf82d6c20b58a199959bf51",
                          "typeString": "literal_string \"revocation list with given id already exist\""
                        }
                      ],
                      "id": 1857,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4172:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4172:85:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1865,
                  "nodeType": "ExpressionStatement",
                  "src": "4172:85:5"
                },
                {
                  "assignments": [
                    1868
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1868,
                      "mutability": "mutable",
                      "name": "walletRegistry",
                      "nameLocation": "4301:14:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1912,
                      "src": "4268:47:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                        "typeString": "struct RevocationRegistry.WalletRevocationRegistry"
                      },
                      "typeName": {
                        "id": 1867,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1866,
                          "name": "WalletRevocationRegistry",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1512,
                          "src": "4268:24:5"
                        },
                        "referencedDeclaration": 1512,
                        "src": "4268:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                          "typeString": "struct RevocationRegistry.WalletRevocationRegistry"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1872,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1869,
                      "name": "registry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1517,
                      "src": "4318:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                        "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                      }
                    },
                    "id": 1871,
                    "indexExpression": {
                      "id": 1870,
                      "name": "primary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1851,
                      "src": "4327:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4318:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                      "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4268:67:5"
                },
                {
                  "assignments": [
                    1877
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1877,
                      "mutability": "mutable",
                      "name": "revocationList",
                      "nameLocation": "4363:14:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1912,
                      "src": "4346:31:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4346:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1876,
                        "nodeType": "ArrayTypeName",
                        "src": "4346:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1883,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1881,
                        "name": "REVOCATION_ARRAY_SIZE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1498,
                        "src": "4394:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4380:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4384:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1879,
                        "nodeType": "ArrayTypeName",
                        "src": "4384:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 1882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4380:36:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4346:70:5"
                },
                {
                  "expression": {
                    "id": 1890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "expression": {
                          "id": 1884,
                          "name": "walletRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1868,
                          "src": "4427:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                            "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage pointer"
                          }
                        },
                        "id": 1887,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "listIdUsage",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1506,
                        "src": "4427:26:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                          "typeString": "mapping(uint256 => bool)"
                        }
                      },
                      "id": 1888,
                      "indexExpression": {
                        "id": 1886,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "4454:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4427:34:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 1889,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4464:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4427:41:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1891,
                  "nodeType": "ExpressionStatement",
                  "src": "4427:41:5"
                },
                {
                  "expression": {
                    "id": 1898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "expression": {
                          "id": 1892,
                          "name": "walletRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1868,
                          "src": "4478:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                            "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage pointer"
                          }
                        },
                        "id": 1895,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lists",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1511,
                        "src": "4478:20:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(uint256 => uint256[] storage ref)"
                        }
                      },
                      "id": 1896,
                      "indexExpression": {
                        "id": 1894,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "4499:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4478:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 1897,
                      "name": "revocationList",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1877,
                      "src": "4509:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "4478:45:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 1899,
                  "nodeType": "ExpressionStatement",
                  "src": "4478:45:5"
                },
                {
                  "expression": {
                    "id": 1903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "4533:27:5",
                    "subExpression": {
                      "expression": {
                        "id": 1900,
                        "name": "walletRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1868,
                        "src": "4533:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage_ptr",
                          "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage pointer"
                        }
                      },
                      "id": 1902,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalLists",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1502,
                      "src": "4533:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1904,
                  "nodeType": "ExpressionStatement",
                  "src": "4533:27:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1906,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1851,
                        "src": "4597:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1907,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1838,
                        "src": "4606:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1908,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1840,
                        "src": "4614:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1909,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1842,
                        "src": "4623:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 1905,
                      "name": "RevocationListCreate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1552,
                      "src": "4576:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,string memory,string memory)"
                      }
                    },
                    "id": 1910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4576:54:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1911,
                  "nodeType": "EmitStatement",
                  "src": "4571:59:5"
                }
              ]
            },
            "id": 1913,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1847,
                    "name": "operator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1844,
                    "src": "4089:8:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1848,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1846,
                  "name": "existingWallet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1646,
                  "src": "4074:14:5"
                },
                "nodeType": "ModifierInvocation",
                "src": "4074:24:5"
              }
            ],
            "name": "addRevocationListInternal",
            "nameLocation": "3961:25:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1838,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "3995:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1913,
                  "src": "3987:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1837,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3987:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1840,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "4017:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1913,
                  "src": "4003:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1839,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4003:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1842,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "4040:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1913,
                  "src": "4026:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1841,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4026:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1844,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4056:8:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1913,
                  "src": "4048:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1843,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4048:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3986:79:5"
            },
            "returnParameters": {
              "id": 1849,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4099:0:5"
            },
            "scope": 2151,
            "src": "3952:685:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1933,
              "nodeType": "Block",
              "src": "4759:85:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1925,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1915,
                        "src": "4794:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1926,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1917,
                        "src": "4802:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 1927,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1919,
                        "src": "4809:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1928,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1921,
                        "src": "4818:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 1929,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "4826:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "4826:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1924,
                      "name": "setRevokedStatusInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2054,
                      "src": "4769:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint32_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (uint256,uint32,string memory,string memory,address)"
                      }
                    },
                    "id": 1931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4769:68:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1932,
                  "nodeType": "ExpressionStatement",
                  "src": "4769:68:5"
                }
              ]
            },
            "functionSelector": "4d5fff6d",
            "id": 1934,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setRevokedStatus",
            "nameLocation": "4652:16:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1915,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "4677:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1934,
                  "src": "4669:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1914,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4669:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1917,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4692:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1934,
                  "src": "4685:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1916,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4685:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1919,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "4713:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1934,
                  "src": "4699:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1918,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4699:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1921,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "4736:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1934,
                  "src": "4722:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4722:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4668:75:5"
            },
            "returnParameters": {
              "id": 1923,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4759:0:5"
            },
            "scope": 2151,
            "src": "4643:201:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1967,
              "nodeType": "Block",
              "src": "4996:182:5",
              "statements": [
                {
                  "assignments": [
                    1948
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1948,
                      "mutability": "mutable",
                      "name": "operator",
                      "nameLocation": "5014:8:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 1967,
                      "src": "5006:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1947,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5006:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1958,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1953,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "5072:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "5072:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1951,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5061:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "5061:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5061:22:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 1956,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1944,
                        "src": "5085:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1949,
                        "name": "SignatureVerification",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1427,
                        "src": "5025:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignatureVerification_$1427_$",
                          "typeString": "type(library SignatureVerification)"
                        }
                      },
                      "id": 1950,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1426,
                      "src": "5025:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 1957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5025:70:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5006:89:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1960,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "5130:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1961,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1938,
                        "src": "5138:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 1962,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1940,
                        "src": "5145:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1963,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1942,
                        "src": "5154:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 1964,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1948,
                        "src": "5162:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1959,
                      "name": "setRevokedStatusInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2054,
                      "src": "5105:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint32_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (uint256,uint32,string memory,string memory,address)"
                      }
                    },
                    "id": 1965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5105:66:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1966,
                  "nodeType": "ExpressionStatement",
                  "src": "5105:66:5"
                }
              ]
            },
            "functionSelector": "06295354",
            "id": 1968,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setRevokedStatusSigned",
            "nameLocation": "4859:22:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1936,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "4890:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "4882:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1935,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4882:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1938,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4905:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "4898:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1937,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4898:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1940,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "4926:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "4912:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1939,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4912:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1942,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "4949:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "4935:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1941,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4935:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1944,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "4970:9:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "4957:22:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1943,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4957:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4881:99:5"
            },
            "returnParameters": {
              "id": 1946,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4996:0:5"
            },
            "scope": 2151,
            "src": "4850:328:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2053,
              "nodeType": "Block",
              "src": "5356:573:5",
              "statements": [
                {
                  "assignments": [
                    1985
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1985,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "5374:7:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2053,
                      "src": "5366:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1984,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5366:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1990,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1988,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1978,
                        "src": "5410:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 1986,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1520,
                        "src": "5384:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$1358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 1987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 939,
                      "src": "5384:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 1989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5384:35:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5366:53:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1994,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1992,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1972,
                          "src": "5437:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 1993,
                          "name": "REVOCATION_LIST_LENGTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1493,
                          "src": "5445:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5437:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6c69737420696e646578206f7574206f6620626f756e64",
                        "id": 1995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5469:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d0abbe5d1b2e166a6f6245ebce2e4467644901ec88cb714194eb24d29f4acfcc",
                          "typeString": "literal_string \"list index out of bound\""
                        },
                        "value": "list index out of bound"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d0abbe5d1b2e166a6f6245ebce2e4467644901ec88cb714194eb24d29f4acfcc",
                          "typeString": "literal_string \"list index out of bound\""
                        }
                      ],
                      "id": 1991,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5429:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5429:66:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1997,
                  "nodeType": "ExpressionStatement",
                  "src": "5429:66:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2000,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1985,
                            "src": "5525:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2001,
                            "name": "listId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1970,
                            "src": "5534:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1999,
                          "name": "isListExist",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1663,
                          "src": "5513:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 2002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5513:28:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "7265766f636174696f6e206c697374207769746820676976656e20696420646f6573206e6f74206578697374",
                        "id": 2003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5543:46:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_600dcab9829483713edb9c2bd8aee47368c9407d60ad13e7036eb34e5cbacdeb",
                          "typeString": "literal_string \"revocation list with given id does not exist\""
                        },
                        "value": "revocation list with given id does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_600dcab9829483713edb9c2bd8aee47368c9407d60ad13e7036eb34e5cbacdeb",
                          "typeString": "literal_string \"revocation list with given id does not exist\""
                        }
                      ],
                      "id": 1998,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5505:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5505:85:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2005,
                  "nodeType": "ExpressionStatement",
                  "src": "5505:85:5"
                },
                {
                  "assignments": [
                    2007,
                    2009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2007,
                      "mutability": "mutable",
                      "name": "pos",
                      "nameLocation": "5609:3:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2053,
                      "src": "5602:10:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2006,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5602:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2009,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "5621:6:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2053,
                      "src": "5614:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2008,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5614:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2014,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2011,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1972,
                        "src": "5652:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "hexValue": "323536",
                        "id": 2012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5659:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_256_by_1",
                          "typeString": "int_const 256"
                        },
                        "value": "256"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_rational_256_by_1",
                          "typeString": "int_const 256"
                        }
                      ],
                      "id": 2010,
                      "name": "getPositionAndOffset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1700,
                      "src": "5631:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_uint32_$_t_uint32_$",
                        "typeString": "function (uint32,uint32) pure returns (uint32,uint32)"
                      }
                    },
                    "id": 2013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5631:32:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint32_$_t_uint32_$",
                      "typeString": "tuple(uint32,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5601:62:5"
                },
                {
                  "assignments": [
                    2016
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2016,
                      "mutability": "mutable",
                      "name": "currentValue",
                      "nameLocation": "5682:12:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2053,
                      "src": "5674:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2015,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5674:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2025,
                  "initialValue": {
                    "baseExpression": {
                      "baseExpression": {
                        "expression": {
                          "baseExpression": {
                            "id": 2017,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1517,
                            "src": "5697:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                              "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                            }
                          },
                          "id": 2019,
                          "indexExpression": {
                            "id": 2018,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1985,
                            "src": "5706:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5697:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                            "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                          }
                        },
                        "id": 2020,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lists",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1511,
                        "src": "5697:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(uint256 => uint256[] storage ref)"
                        }
                      },
                      "id": 2022,
                      "indexExpression": {
                        "id": 2021,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1970,
                        "src": "5721:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5697:31:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 2024,
                    "indexExpression": {
                      "id": 2023,
                      "name": "pos",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2007,
                      "src": "5729:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5697:36:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5674:59:5"
                },
                {
                  "assignments": [
                    2027
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2027,
                      "mutability": "mutable",
                      "name": "bitValue",
                      "nameLocation": "5751:8:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2053,
                      "src": "5743:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2026,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5743:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2031,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 2028,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5762:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "id": 2029,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2009,
                      "src": "5767:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "5762:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5743:30:5"
                },
                {
                  "expression": {
                    "id": 2043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2032,
                              "name": "registry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1517,
                              "src": "5784:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                                "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                              }
                            },
                            "id": 2034,
                            "indexExpression": {
                              "id": 2033,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1985,
                              "src": "5793:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5784:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                              "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                            }
                          },
                          "id": 2035,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1511,
                          "src": "5784:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$",
                            "typeString": "mapping(uint256 => uint256[] storage ref)"
                          }
                        },
                        "id": 2037,
                        "indexExpression": {
                          "id": 2036,
                          "name": "listId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1970,
                          "src": "5808:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5784:31:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 2039,
                      "indexExpression": {
                        "id": 2038,
                        "name": "pos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2007,
                        "src": "5816:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5784:36:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 2040,
                        "name": "currentValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2016,
                        "src": "5823:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "id": 2041,
                        "name": "bitValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2027,
                        "src": "5838:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5823:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5784:62:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2044,
                  "nodeType": "ExpressionStatement",
                  "src": "5784:62:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2046,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1985,
                        "src": "5882:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2047,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1970,
                        "src": "5891:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2048,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1972,
                        "src": "5899:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 2049,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1974,
                        "src": "5906:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 2050,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1976,
                        "src": "5915:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2045,
                      "name": "RevokedStatusUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1564,
                      "src": "5862:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint32_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint32,string memory,string memory)"
                      }
                    },
                    "id": 2051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5862:60:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2052,
                  "nodeType": "EmitStatement",
                  "src": "5857:65:5"
                }
              ]
            },
            "id": 2054,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1981,
                    "name": "operator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1978,
                    "src": "5342:8:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1982,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1980,
                  "name": "existingWallet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1646,
                  "src": "5327:14:5"
                },
                "nodeType": "ModifierInvocation",
                "src": "5327:24:5"
              }
            ],
            "name": "setRevokedStatusInternal",
            "nameLocation": "5193:24:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1979,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1970,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "5226:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2054,
                  "src": "5218:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1969,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5218:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1972,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "5241:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2054,
                  "src": "5234:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 1971,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5234:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1974,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "5262:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2054,
                  "src": "5248:21:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1973,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5248:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1976,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "5285:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2054,
                  "src": "5271:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1975,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5271:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1978,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "5301:8:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2054,
                  "src": "5293:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1977,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5293:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5217:93:5"
            },
            "returnParameters": {
              "id": 1983,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5356:0:5"
            },
            "scope": 2151,
            "src": "5184:745:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2126,
              "nodeType": "Block",
              "src": "6079:524:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2068,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2066,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2060,
                          "src": "6098:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 2067,
                          "name": "REVOCATION_LIST_LENGTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1493,
                          "src": "6106:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6098:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6c69737420696e646578206f7574206f6620626f756e64",
                        "id": 2069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6130:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d0abbe5d1b2e166a6f6245ebce2e4467644901ec88cb714194eb24d29f4acfcc",
                          "typeString": "literal_string \"list index out of bound\""
                        },
                        "value": "list index out of bound"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d0abbe5d1b2e166a6f6245ebce2e4467644901ec88cb714194eb24d29f4acfcc",
                          "typeString": "literal_string \"list index out of bound\""
                        }
                      ],
                      "id": 2065,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6090:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6090:66:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2071,
                  "nodeType": "ExpressionStatement",
                  "src": "6090:66:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2074,
                            "name": "wallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2056,
                            "src": "6188:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2073,
                          "name": "isWalletExist",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1626,
                          "src": "6174:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 2075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6174:21:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "77616c6c6574206e6f7420696e207265676973747279",
                        "id": 2076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6197:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e127075bc2e60c80f7cd16779420f4912fc98f666ab206ab072530c17556ffaf",
                          "typeString": "literal_string \"wallet not in registry\""
                        },
                        "value": "wallet not in registry"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e127075bc2e60c80f7cd16779420f4912fc98f666ab206ab072530c17556ffaf",
                          "typeString": "literal_string \"wallet not in registry\""
                        }
                      ],
                      "id": 2072,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6166:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6166:56:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2078,
                  "nodeType": "ExpressionStatement",
                  "src": "6166:56:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2081,
                            "name": "wallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2056,
                            "src": "6252:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2082,
                            "name": "listId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2058,
                            "src": "6260:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2080,
                          "name": "isListExist",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1663,
                          "src": "6240:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 2083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6240:27:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "7265766f636174696f6e206c697374207769746820676976656e20696420646f6573206e6f74206578697374",
                        "id": 2084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6269:46:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_600dcab9829483713edb9c2bd8aee47368c9407d60ad13e7036eb34e5cbacdeb",
                          "typeString": "literal_string \"revocation list with given id does not exist\""
                        },
                        "value": "revocation list with given id does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_600dcab9829483713edb9c2bd8aee47368c9407d60ad13e7036eb34e5cbacdeb",
                          "typeString": "literal_string \"revocation list with given id does not exist\""
                        }
                      ],
                      "id": 2079,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6232:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6232:84:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2086,
                  "nodeType": "ExpressionStatement",
                  "src": "6232:84:5"
                },
                {
                  "assignments": [
                    2088,
                    2090
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2088,
                      "mutability": "mutable",
                      "name": "pos",
                      "nameLocation": "6335:3:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2126,
                      "src": "6328:10:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2087,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6328:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2090,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "6347:6:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2126,
                      "src": "6340:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2089,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6340:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2095,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2092,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2060,
                        "src": "6378:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "hexValue": "323536",
                        "id": 2093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6385:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_256_by_1",
                          "typeString": "int_const 256"
                        },
                        "value": "256"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_rational_256_by_1",
                          "typeString": "int_const 256"
                        }
                      ],
                      "id": 2091,
                      "name": "getPositionAndOffset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1700,
                      "src": "6357:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$returns$_t_uint32_$_t_uint32_$",
                        "typeString": "function (uint32,uint32) pure returns (uint32,uint32)"
                      }
                    },
                    "id": 2094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6357:32:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint32_$_t_uint32_$",
                      "typeString": "tuple(uint32,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6327:62:5"
                },
                {
                  "assignments": [
                    2097
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2097,
                      "mutability": "mutable",
                      "name": "mask",
                      "nameLocation": "6408:4:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2126,
                      "src": "6400:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2096,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6400:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2101,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 2098,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6415:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "id": 2099,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2090,
                      "src": "6420:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "6415:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6400:26:5"
                },
                {
                  "assignments": [
                    2103
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2103,
                      "mutability": "mutable",
                      "name": "maskedValue",
                      "nameLocation": "6444:11:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2126,
                      "src": "6436:19:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2102,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6436:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2114,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2104,
                              "name": "registry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1517,
                              "src": "6458:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                                "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                              }
                            },
                            "id": 2106,
                            "indexExpression": {
                              "id": 2105,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2056,
                              "src": "6467:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6458:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                              "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                            }
                          },
                          "id": 2107,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1511,
                          "src": "6458:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$",
                            "typeString": "mapping(uint256 => uint256[] storage ref)"
                          }
                        },
                        "id": 2109,
                        "indexExpression": {
                          "id": 2108,
                          "name": "listId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2058,
                          "src": "6481:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6458:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 2111,
                      "indexExpression": {
                        "id": 2110,
                        "name": "pos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2088,
                        "src": "6489:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6458:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&",
                    "rightExpression": {
                      "id": 2112,
                      "name": "mask",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2097,
                      "src": "6496:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6458:42:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6436:64:5"
                },
                {
                  "expression": {
                    "id": 2122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2115,
                      "name": "revokedStatus",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2063,
                      "src": "6510:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2118,
                            "name": "maskedValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2103,
                            "src": "6543:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "id": 2119,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2090,
                            "src": "6558:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "6543:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2116,
                          "name": "SafeCast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1488,
                          "src": "6526:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_SafeCast_$1488_$",
                            "typeString": "type(library SafeCast)"
                          }
                        },
                        "id": 2117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1487,
                        "src": "6526:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                          "typeString": "function (uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6526:39:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6510:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2123,
                  "nodeType": "ExpressionStatement",
                  "src": "6510:55:5"
                },
                {
                  "expression": {
                    "id": 2124,
                    "name": "revokedStatus",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2063,
                    "src": "6583:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 2064,
                  "id": 2125,
                  "nodeType": "Return",
                  "src": "6576:20:5"
                }
              ]
            },
            "functionSelector": "93d630f0",
            "id": 2127,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRevokedStatus",
            "nameLocation": "5944:16:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2056,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "5978:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2127,
                  "src": "5970:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2055,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5970:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2058,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "6002:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2127,
                  "src": "5994:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2057,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5994:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2060,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "6025:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2127,
                  "src": "6018:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 2059,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6018:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5960:76:5"
            },
            "returnParameters": {
              "id": 2064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2063,
                  "mutability": "mutable",
                  "name": "revokedStatus",
                  "nameLocation": "6064:13:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2127,
                  "src": "6058:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2062,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "6058:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6057:21:5"
            },
            "scope": 2151,
            "src": "5935:668:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2149,
              "nodeType": "Block",
              "src": "6722:117:5",
              "statements": [
                {
                  "assignments": [
                    2137
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2137,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "6740:7:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 2149,
                      "src": "6732:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2136,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6732:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2143,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2140,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "6776:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "6776:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 2138,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1520,
                        "src": "6750:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$1358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 2139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 939,
                      "src": "6750:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 2142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6750:37:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6732:55:5"
                },
                {
                  "expression": {
                    "expression": {
                      "baseExpression": {
                        "id": 2144,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1517,
                        "src": "6804:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_WalletRevocationRegistry_$1512_storage_$",
                          "typeString": "mapping(address => struct RevocationRegistry.WalletRevocationRegistry storage ref)"
                        }
                      },
                      "id": 2146,
                      "indexExpression": {
                        "id": 2145,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2137,
                        "src": "6813:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6804:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_WalletRevocationRegistry_$1512_storage",
                        "typeString": "struct RevocationRegistry.WalletRevocationRegistry storage ref"
                      }
                    },
                    "id": 2147,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "totalLists",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1502,
                    "src": "6804:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2135,
                  "id": 2148,
                  "nodeType": "Return",
                  "src": "6797:35:5"
                }
              ]
            },
            "functionSelector": "cb7dfa22",
            "id": 2150,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 2130,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967281,
                      "src": "6684:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 2131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "6684:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 2132,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 2129,
                  "name": "existingWallet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1646,
                  "src": "6669:14:5"
                },
                "nodeType": "ModifierInvocation",
                "src": "6669:26:5"
              }
            ],
            "name": "getRevocationListCount",
            "nameLocation": "6618:22:5",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2128,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6640:2:5"
            },
            "returnParameters": {
              "id": 2135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2134,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2150,
                  "src": "6709:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6709:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6708:9:5"
            },
            "scope": 2151,
            "src": "6609:230:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 2152,
        "src": "507:6334:5",
        "usedErrors": []
      }
    ],
    "src": "33:6809:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.4+commit.c7e474f2.Emscripten.clang"
  },
  "networks": {
    "1480": {
      "events": {},
      "links": {},
      "address": "0xD890F2D60B429f9e257FC0Bc58Ef2237776DD91B",
      "transactionHash": "0x8b5b47f37daeee996baef525e9c1b998889edeeeacf26046ba857ed902099648"
    },
    "1481": {
      "events": {},
      "links": {},
      "address": "0x1C29461C7480d1d8570df7c0A4F314D0bE8cD5Bf",
      "transactionHash": "0x765cdd8078eb1280fb7cfcdf2f23ccae48b06d540d520ac77193f7a3ca013b37"
    },
    "1482": {
      "events": {},
      "links": {},
      "address": "0x8264cCaEa3Cacf851e6DEd77999dDB6cde6977DB",
      "transactionHash": "0x414e4256774891e7d25259671dd221fd76e4605e14f080b2373d290dc004b521"
    },
    "1483": {
      "events": {},
      "links": {},
      "address": "0x1499c888409D62b8eC5016F4E2b6bb4beE1EDF44",
      "transactionHash": "0xfaac811800c1586e571225c352b72a9f7ccdd225b03fcd3287b377ee77215900"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2024-07-15T16:12:27.678Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}