{
  "contractName": "Permissions",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "rotateVNF",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVNF",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "scope",
          "type": "string"
        }
      ],
      "name": "addAddressScope",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "scope",
          "type": "string"
        }
      ],
      "name": "removeAddressScope",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "scopesToAdd",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "scopesToRemove",
          "type": "string[]"
        }
      ],
      "name": "updateAddressScopes",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "scope",
          "type": "string"
        }
      ],
      "name": "checkAddressScope",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "primary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "permissioning",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "rotation",
          "type": "address"
        }
      ],
      "name": "addPrimary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "primary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newPermissioning",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newRotation",
          "type": "address"
        }
      ],
      "name": "rotatePermissioning",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPrimaries",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "primary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "addOperatorKey",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "primary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "removeOperatorKey",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "primary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newOperator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "oldOperator",
          "type": "address"
        }
      ],
      "name": "rotateOperatorKey",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "lookupPrimary",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "checkOperator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "scope",
          "type": "string"
        }
      ],
      "name": "checkOperatorWithScope",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "permission",
          "type": "string"
        }
      ],
      "name": "checkOperatorPermission",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "a",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "b",
          "type": "string"
        }
      ],
      "name": "isEqual",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"}],\"name\":\"addAddressScope\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"primary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"addOperatorKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"primary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permissioning\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rotation\",\"type\":\"address\"}],\"name\":\"addPrimary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"}],\"name\":\"checkAddressScope\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"permission\",\"type\":\"string\"}],\"name\":\"checkOperatorPermission\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"}],\"name\":\"checkOperatorWithScope\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrimaries\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVNF\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"a\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"b\",\"type\":\"string\"}],\"name\":\"isEqual\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"lookupPrimary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"}],\"name\":\"removeAddressScope\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"primary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeOperatorKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"primary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOperator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldOperator\",\"type\":\"address\"}],\"name\":\"rotateOperatorKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"primary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPermissioning\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newRotation\",\"type\":\"address\"}],\"name\":\"rotatePermissioning\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"rotateVNF\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"scopesToAdd\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"scopesToRemove\",\"type\":\"string[]\"}],\"name\":\"updateAddressScopes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Permissions.sol\":\"Permissions\"},\"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\"]},\"project:/contracts/Permissions.sol\":{\"keccak256\":\"0xfeb567393dc20917e657c98e7eab14b8b4bde172e097c9da99d9d504f406218b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d2bb20d59a6ac1b5e56afcec46a9ae3bb2e77afd20cce0d21af2b1f92eb2416\",\"dweb:/ipfs/QmXT8TNUmSk912otnG9hme8df8ZPZBfY1nq9BWjFtfZKpY\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506112dc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063bdb1a73211610071578063bdb1a7321461023c578063c187ce091461024f578063de1ac2fd1461027b578063e8439bf21461028e578063f9f10874146102a157600080fd5b80638129fc1c146101fb5780638c8a986d14610203578063a38a0cf414610216578063a547eca61461022957600080fd5b80633fb384d7116100e95780633fb384d71461018c578063465c41051461019f57806351547891146101c257806356796182146101d55780637146b2ce146101e857600080fd5b806307db6d1b1461011b57806309891c841461014b57806334ca4b641461016057806336f227d514610177575b600080fd5b61012e61012936600461104b565b6102b4565b6040516001600160a01b0390911681526020015b60405180910390f35b6101536103c2565b6040516101429190611127565b6000546201000090046001600160a01b031661012e565b61018a61018536600461104b565b610424565b005b61018a61019a366004610f98565b6104d4565b6101b26101ad366004611097565b6105ad565b6040519015158152602001610142565b61018a6101d036600461104b565b610606565b61018a6101e3366004610f66565b610680565b61018a6101f6366004610f98565b610799565b61018a610859565b61018a610211366004610f98565b610992565b6101b261022436600461104b565b6109e7565b61018a610237366004610fda565b610a28565b61018a61024a366004610f4c565b610b98565b61012e61025d366004610f4c565b6001600160a01b039081166000908152600460205260409020541690565b61012e610289366004610f4c565b610c1a565b61018a61029c366004610f66565b610d48565b61012e6102af36600461104b565b610dac565b60006102cf82604051806020016040528060008152506105ad565b156103325760405162461bcd60e51b815260206004820152602860248201527f5065726d697373696f6e733a207065726d697373696f6e206d6179206e6f7420604482015267626520656d70747960c01b60648201526084015b60405180910390fd5b600061033d84610c1a565b905061034981846109e7565b6103bb5760405162461bcd60e51b815260206004820152603b60248201527f5065726d697373696f6e733a207072696d617279206f66206f70657261746f7260448201527f206c61636b7320726571756573746564207065726d697373696f6e00000000006064820152608401610329565b9392505050565b6060600580548060200260200160405190810160405280929190818152602001828054801561041a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103fc575b5050505050905090565b6000546201000090046001600160a01b031633146104545760405162461bcd60e51b815260040161032990611174565b816001600160a01b03811661047b5760405162461bcd60e51b8152600401610329906111f7565b6001806000856001600160a01b03166001600160a01b03168152602001908152602001600020836040516104af91906110ee565b908152604051908190036020019020805491151560ff19909216919091179055505050565b6000546201000090046001600160a01b031633146105045760405162461bcd60e51b815260040161032990611174565b826001600160a01b03811661052b5760405162461bcd60e51b8152600401610329906111f7565b506001600160a01b03928316600081815260026020908152604080832080549688166001600160a01b031997881617905560039091528120805493909516928416929092179093556005805460018101825591527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180549091169091179055565b6000816040516020016105c091906110ee565b60405160208183030381529060405280519060200120836040516020016105e791906110ee565b6040516020818303038152906040528051906020012014905092915050565b6000546201000090046001600160a01b031633146106365760405162461bcd60e51b815260040161032990611174565b6001600160a01b038216600090815260016020526040808220905161065c9084906110ee565b908152604051908190036020019020805491151560ff199092169190911790555050565b6001600160a01b0382811660009081526002602052604090205483911633146106bb5760405162461bcd60e51b8152600401610329906111ab565b816001600160a01b0381166106e25760405162461bcd60e51b8152600401610329906111f7565b6001600160a01b0383811660009081526004602052604090205416156107675760405162461bcd60e51b815260206004820152603460248201527f5065726d697373696f6e733a206f70657261746f7220697320616c7265616479604482015273206d617070656420746f2061207072696d61727960601b6064820152608401610329565b50506001600160a01b0390811660009081526004602052604090208054919092166001600160a01b0319909116179055565b6001600160a01b0383811660009081526003602052604090205484911633146108145760405162461bcd60e51b815260206004820152602760248201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420726f746174604482015266696f6e206b657960c81b6064820152608401610329565b506001600160a01b03928316600090815260026020908152604080832080549587166001600160a01b0319968716179055600390915290208054919093169116179055565b600054610100900460ff16158080156108795750600054600160ff909116105b806108935750303b158015610893575060005460ff166001145b6108f65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610329565b6000805460ff191660011790558015610919576000805461ff0019166101001790555b6000546201000090046001600160a01b0316610949576000805462010000600160b01b0319163362010000021790555b801561098f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b0383811660009081526002602052604090205484911633146109cd5760405162461bcd60e51b8152600401610329906111ab565b6109d78483610d48565b6109e18484610680565b50505050565b6001600160a01b0382166000908152600160205260408082209051610a0d9084906110ee565b9081526040519081900360200190205460ff16905092915050565b6000546201000090046001600160a01b03163314610a585760405162461bcd60e51b815260040161032990611174565b60005b8251811015610af7576000838281518110610a8657634e487b7160e01b600052603260045260246000fd5b602002602001015190506001806000876001600160a01b03166001600160a01b0316815260200190815260200160002082604051610ac491906110ee565b908152604051908190036020019020805491151560ff199092169190911790555080610aef81611269565b915050610a5b565b5060005b81518110156109e1576000828281518110610b2657634e487b7160e01b600052603260045260246000fd5b60200260200101519050600060016000876001600160a01b03166001600160a01b0316815260200190815260200160002082604051610b6591906110ee565b908152604051908190036020019020805491151560ff199092169190911790555080610b9081611269565b915050610afb565b6000546201000090046001600160a01b03163314610bc85760405162461bcd60e51b815260040161032990611174565b806001600160a01b038116610bef5760405162461bcd60e51b8152600401610329906111f7565b50600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6001600160a01b0380821660009081526004602052604081205490911680610c9c5760405162461bcd60e51b815260206004820152602f60248201527f5065726d697373696f6e733a206f70657261746f72206e6f7420706f696e746960448201526e6e6720746f2061207072696d61727960881b6064820152608401610329565b610cd081604051806040016040528060128152602001717472616e73616374696f6e733a777269746560701b8152506109e7565b610d425760405162461bcd60e51b815260206004820152603f60248201527f5065726d697373696f6e733a207072696d617279206f66206f70657261746f7260448201527f206c61636b73207472616e73616374696f6e733a77726974652073636f7065006064820152608401610329565b92915050565b6001600160a01b038281166000908152600260205260409020548391163314610d835760405162461bcd60e51b8152600401610329906111ab565b506001600160a01b0316600090815260046020526040902080546001600160a01b031916905550565b600080610db884610c1a565b9050610dc481846109e7565b6103bb5760405162461bcd60e51b815260206004820152602c60248201527f5065726d697373696f6e733a207072696d617279206f66206f70657261746f7260448201526b206c61636b732073636f706560a01b6064820152608401610329565b80356001600160a01b0381168114610e3c57600080fd5b919050565b600082601f830112610e51578081fd5b8135602067ffffffffffffffff80831115610e6e57610e6e611290565b8260051b610e7d838201611238565b8481528381019087850183890186018a1015610e97578788fd5b8793505b86841015610ed457803585811115610eb1578889fd5b610ebf8b88838d0101610ee1565b84525060019390930192918501918501610e9b565b5098975050505050505050565b600082601f830112610ef1578081fd5b813567ffffffffffffffff811115610f0b57610f0b611290565b610f1e601f8201601f1916602001611238565b818152846020838601011115610f32578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215610f5d578081fd5b6103bb82610e25565b60008060408385031215610f78578081fd5b610f8183610e25565b9150610f8f60208401610e25565b90509250929050565b600080600060608486031215610fac578081fd5b610fb584610e25565b9250610fc360208501610e25565b9150610fd160408501610e25565b90509250925092565b600080600060608486031215610fee578283fd5b610ff784610e25565b9250602084013567ffffffffffffffff80821115611013578384fd5b61101f87838801610e41565b93506040860135915080821115611034578283fd5b5061104186828701610e41565b9150509250925092565b6000806040838503121561105d578182fd5b61106683610e25565b9150602083013567ffffffffffffffff811115611081578182fd5b61108d85828601610ee1565b9150509250929050565b600080604083850312156110a9578182fd5b823567ffffffffffffffff808211156110c0578384fd5b6110cc86838701610ee1565b935060208501359150808211156110e1578283fd5b5061108d85828601610ee1565b60008251815b8181101561110e57602081860181015185830152016110f4565b8181111561111c5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156111685783516001600160a01b031683529284019291840191600101611143565b50909695505050505050565b6020808252601e908201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e460000604082015260600190565b6020808252602c908201527f5065726d697373696f6e733a2063616c6c6572206973206e6f74207065726d6960408201526b7373696f6e696e67206b657960a01b606082015260800190565b60208082526021908201527f5065726d697373696f6e733a20616464726573732069732030206164647265736040820152607360f81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561126157611261611290565b604052919050565b600060001982141561128957634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea26469706673582212204d8f6d49e70778eed32a3b91e770db604fc5fd2b689be77d096b56039f4b272164736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063bdb1a73211610071578063bdb1a7321461023c578063c187ce091461024f578063de1ac2fd1461027b578063e8439bf21461028e578063f9f10874146102a157600080fd5b80638129fc1c146101fb5780638c8a986d14610203578063a38a0cf414610216578063a547eca61461022957600080fd5b80633fb384d7116100e95780633fb384d71461018c578063465c41051461019f57806351547891146101c257806356796182146101d55780637146b2ce146101e857600080fd5b806307db6d1b1461011b57806309891c841461014b57806334ca4b641461016057806336f227d514610177575b600080fd5b61012e61012936600461104b565b6102b4565b6040516001600160a01b0390911681526020015b60405180910390f35b6101536103c2565b6040516101429190611127565b6000546201000090046001600160a01b031661012e565b61018a61018536600461104b565b610424565b005b61018a61019a366004610f98565b6104d4565b6101b26101ad366004611097565b6105ad565b6040519015158152602001610142565b61018a6101d036600461104b565b610606565b61018a6101e3366004610f66565b610680565b61018a6101f6366004610f98565b610799565b61018a610859565b61018a610211366004610f98565b610992565b6101b261022436600461104b565b6109e7565b61018a610237366004610fda565b610a28565b61018a61024a366004610f4c565b610b98565b61012e61025d366004610f4c565b6001600160a01b039081166000908152600460205260409020541690565b61012e610289366004610f4c565b610c1a565b61018a61029c366004610f66565b610d48565b61012e6102af36600461104b565b610dac565b60006102cf82604051806020016040528060008152506105ad565b156103325760405162461bcd60e51b815260206004820152602860248201527f5065726d697373696f6e733a207065726d697373696f6e206d6179206e6f7420604482015267626520656d70747960c01b60648201526084015b60405180910390fd5b600061033d84610c1a565b905061034981846109e7565b6103bb5760405162461bcd60e51b815260206004820152603b60248201527f5065726d697373696f6e733a207072696d617279206f66206f70657261746f7260448201527f206c61636b7320726571756573746564207065726d697373696f6e00000000006064820152608401610329565b9392505050565b6060600580548060200260200160405190810160405280929190818152602001828054801561041a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103fc575b5050505050905090565b6000546201000090046001600160a01b031633146104545760405162461bcd60e51b815260040161032990611174565b816001600160a01b03811661047b5760405162461bcd60e51b8152600401610329906111f7565b6001806000856001600160a01b03166001600160a01b03168152602001908152602001600020836040516104af91906110ee565b908152604051908190036020019020805491151560ff19909216919091179055505050565b6000546201000090046001600160a01b031633146105045760405162461bcd60e51b815260040161032990611174565b826001600160a01b03811661052b5760405162461bcd60e51b8152600401610329906111f7565b506001600160a01b03928316600081815260026020908152604080832080549688166001600160a01b031997881617905560039091528120805493909516928416929092179093556005805460018101825591527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180549091169091179055565b6000816040516020016105c091906110ee565b60405160208183030381529060405280519060200120836040516020016105e791906110ee565b6040516020818303038152906040528051906020012014905092915050565b6000546201000090046001600160a01b031633146106365760405162461bcd60e51b815260040161032990611174565b6001600160a01b038216600090815260016020526040808220905161065c9084906110ee565b908152604051908190036020019020805491151560ff199092169190911790555050565b6001600160a01b0382811660009081526002602052604090205483911633146106bb5760405162461bcd60e51b8152600401610329906111ab565b816001600160a01b0381166106e25760405162461bcd60e51b8152600401610329906111f7565b6001600160a01b0383811660009081526004602052604090205416156107675760405162461bcd60e51b815260206004820152603460248201527f5065726d697373696f6e733a206f70657261746f7220697320616c7265616479604482015273206d617070656420746f2061207072696d61727960601b6064820152608401610329565b50506001600160a01b0390811660009081526004602052604090208054919092166001600160a01b0319909116179055565b6001600160a01b0383811660009081526003602052604090205484911633146108145760405162461bcd60e51b815260206004820152602760248201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420726f746174604482015266696f6e206b657960c81b6064820152608401610329565b506001600160a01b03928316600090815260026020908152604080832080549587166001600160a01b0319968716179055600390915290208054919093169116179055565b600054610100900460ff16158080156108795750600054600160ff909116105b806108935750303b158015610893575060005460ff166001145b6108f65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610329565b6000805460ff191660011790558015610919576000805461ff0019166101001790555b6000546201000090046001600160a01b0316610949576000805462010000600160b01b0319163362010000021790555b801561098f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b0383811660009081526002602052604090205484911633146109cd5760405162461bcd60e51b8152600401610329906111ab565b6109d78483610d48565b6109e18484610680565b50505050565b6001600160a01b0382166000908152600160205260408082209051610a0d9084906110ee565b9081526040519081900360200190205460ff16905092915050565b6000546201000090046001600160a01b03163314610a585760405162461bcd60e51b815260040161032990611174565b60005b8251811015610af7576000838281518110610a8657634e487b7160e01b600052603260045260246000fd5b602002602001015190506001806000876001600160a01b03166001600160a01b0316815260200190815260200160002082604051610ac491906110ee565b908152604051908190036020019020805491151560ff199092169190911790555080610aef81611269565b915050610a5b565b5060005b81518110156109e1576000828281518110610b2657634e487b7160e01b600052603260045260246000fd5b60200260200101519050600060016000876001600160a01b03166001600160a01b0316815260200190815260200160002082604051610b6591906110ee565b908152604051908190036020019020805491151560ff199092169190911790555080610b9081611269565b915050610afb565b6000546201000090046001600160a01b03163314610bc85760405162461bcd60e51b815260040161032990611174565b806001600160a01b038116610bef5760405162461bcd60e51b8152600401610329906111f7565b50600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6001600160a01b0380821660009081526004602052604081205490911680610c9c5760405162461bcd60e51b815260206004820152602f60248201527f5065726d697373696f6e733a206f70657261746f72206e6f7420706f696e746960448201526e6e6720746f2061207072696d61727960881b6064820152608401610329565b610cd081604051806040016040528060128152602001717472616e73616374696f6e733a777269746560701b8152506109e7565b610d425760405162461bcd60e51b815260206004820152603f60248201527f5065726d697373696f6e733a207072696d617279206f66206f70657261746f7260448201527f206c61636b73207472616e73616374696f6e733a77726974652073636f7065006064820152608401610329565b92915050565b6001600160a01b038281166000908152600260205260409020548391163314610d835760405162461bcd60e51b8152600401610329906111ab565b506001600160a01b0316600090815260046020526040902080546001600160a01b031916905550565b600080610db884610c1a565b9050610dc481846109e7565b6103bb5760405162461bcd60e51b815260206004820152602c60248201527f5065726d697373696f6e733a207072696d617279206f66206f70657261746f7260448201526b206c61636b732073636f706560a01b6064820152608401610329565b80356001600160a01b0381168114610e3c57600080fd5b919050565b600082601f830112610e51578081fd5b8135602067ffffffffffffffff80831115610e6e57610e6e611290565b8260051b610e7d838201611238565b8481528381019087850183890186018a1015610e97578788fd5b8793505b86841015610ed457803585811115610eb1578889fd5b610ebf8b88838d0101610ee1565b84525060019390930192918501918501610e9b565b5098975050505050505050565b600082601f830112610ef1578081fd5b813567ffffffffffffffff811115610f0b57610f0b611290565b610f1e601f8201601f1916602001611238565b818152846020838601011115610f32578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215610f5d578081fd5b6103bb82610e25565b60008060408385031215610f78578081fd5b610f8183610e25565b9150610f8f60208401610e25565b90509250929050565b600080600060608486031215610fac578081fd5b610fb584610e25565b9250610fc360208501610e25565b9150610fd160408501610e25565b90509250925092565b600080600060608486031215610fee578283fd5b610ff784610e25565b9250602084013567ffffffffffffffff80821115611013578384fd5b61101f87838801610e41565b93506040860135915080821115611034578283fd5b5061104186828701610e41565b9150509250925092565b6000806040838503121561105d578182fd5b61106683610e25565b9150602083013567ffffffffffffffff811115611081578182fd5b61108d85828601610ee1565b9150509250929050565b600080604083850312156110a9578182fd5b823567ffffffffffffffff808211156110c0578384fd5b6110cc86838701610ee1565b935060208501359150808211156110e1578283fd5b5061108d85828601610ee1565b60008251815b8181101561110e57602081860181015185830152016110f4565b8181111561111c5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156111685783516001600160a01b031683529284019291840191600101611143565b50909695505050505050565b6020808252601e908201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e460000604082015260600190565b6020808252602c908201527f5065726d697373696f6e733a2063616c6c6572206973206e6f74207065726d6960408201526b7373696f6e696e67206b657960a01b606082015260800190565b60208082526021908201527f5065726d697373696f6e733a20616464726573732069732030206164647265736040820152607360f81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561126157611261611290565b604052919050565b600060001982141561128957634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea26469706673582212204d8f6d49e70778eed32a3b91e770db604fc5fd2b689be77d096b56039f4b272164736f6c63430008040033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:11079:4",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:4",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "63:124:4",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "73:29:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "95:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "82:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "82:20:4"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "73:5:4"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "165:16:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "174:1:4",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "177:1:4",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "167:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "167:12:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "167:12:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "124:5:4"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "135:5:4"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "150:3:4",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "155:1:4",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "146:3:4"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "146:11:4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "159:1:4",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "142:3:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "142:19:4"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "131:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "131:31:4"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "121:2:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "121:42:4"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "114:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "114:50:4"
                  },
                  "nodeType": "YulIf",
                  "src": "111:2:4"
                }
              ]
            },
            "name": "abi_decode_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "42:6:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "53:5:4",
                "type": ""
              }
            ],
            "src": "14:173:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "255:849:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "304:24:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "313:5:4"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "320:5:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "306:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "306:20:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "306:20:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "283:6:4"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "291:4:4",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "279:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "279:17:4"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "298:3:4"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "275:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "275:27:4"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "268:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "268:35:4"
                  },
                  "nodeType": "YulIf",
                  "src": "265:2:4"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "337:30:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "360:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "347:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "347:20:4"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "341:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "376:14:4",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "386:4:4",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "380:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "399:28:4",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "409:18:4",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "403:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "450:22:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "452:16:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "452:18:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "452:18:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "442:2:4"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "446:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "439:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "439:10:4"
                  },
                  "nodeType": "YulIf",
                  "src": "436:2:4"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "481:20:4",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "495:1:4",
                        "type": "",
                        "value": "5"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "498:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "491:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "491:10:4"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "485:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "510:39:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "541:2:4"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "545:2:4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "537:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "537:11:4"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "521:15:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "521:28:4"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "514:3:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "558:16:4",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "571:3:4"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "562:5:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "590:3:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "595:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "583:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "583:15:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "583:15:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "607:19:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "618:3:4"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "623:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "614:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "614:12:4"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "607:3:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "635:26:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "650:6:4"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "658:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "646:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "646:15:4"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "639:3:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "707:24:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "716:5:4"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "723:5:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "709:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "709:20:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "709:20:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "684:6:4"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "692:2:4"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "680:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "680:15:4"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "697:2:4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "676:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "676:24:4"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "702:3:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "673:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "673:33:4"
                  },
                  "nodeType": "YulIf",
                  "src": "670:2:4"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "740:14:4",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "749:5:4"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "744:1:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "808:267:4",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "822:36:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "854:3:4"
                            }
                          ],
                          "functionName": {
                            "name": "calldataload",
                            "nodeType": "YulIdentifier",
                            "src": "841:12:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "841:17:4"
                        },
                        "variables": [
                          {
                            "name": "innerOffset",
                            "nodeType": "YulTypedName",
                            "src": "826:11:4",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "894:24:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "903:5:4"
                                  },
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "910:5:4"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "896:6:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "896:20:4"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "896:20:4"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "innerOffset",
                              "nodeType": "YulIdentifier",
                              "src": "877:11:4"
                            },
                            {
                              "name": "_3",
                              "nodeType": "YulIdentifier",
                              "src": "890:2:4"
                            }
                          ],
                          "functionName": {
                            "name": "gt",
                            "nodeType": "YulIdentifier",
                            "src": "874:2:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "874:19:4"
                        },
                        "nodeType": "YulIf",
                        "src": "871:2:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "938:3:4"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "969:6:4"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "977:11:4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "965:3:4"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "965:24:4"
                                    },
                                    {
                                      "name": "_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "991:2:4"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "961:3:4"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "961:33:4"
                                },
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "996:3:4"
                                }
                              ],
                              "functionName": {
                                "name": "abi_decode_string",
                                "nodeType": "YulIdentifier",
                                "src": "943:17:4"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "943:57:4"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "931:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "931:70:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "931:70:4"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1014:19:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "1025:3:4"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "1030:2:4"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1021:3:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1021:12:4"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "1014:3:4"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1046:19:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "1057:3:4"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "1062:2:4"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1053:3:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1053:12:4"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "1046:3:4"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "774:1:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "777:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "771:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "771:9:4"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "781:18:4",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "783:14:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "792:1:4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "795:1:4",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "788:3:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "788:9:4"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "783:1:4"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "767:3:4",
                    "statements": []
                  },
                  "src": "763:312:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1084:14:4",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "1093:5:4"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1084:5:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_string_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "229:6:4",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "237:3:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "245:5:4",
                "type": ""
              }
            ],
            "src": "192:912:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1162:498:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1211:24:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1220:5:4"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1227:5:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1213:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1213:20:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1213:20:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1190:6:4"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1198:4:4",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1186:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1186:17:4"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "1205:3:4"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1182:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1182:27:4"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1175:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1175:35:4"
                  },
                  "nodeType": "YulIf",
                  "src": "1172:2:4"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1244:30:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1267:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1254:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1254:20:4"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1248:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1313:22:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "1315:16:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1315:18:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1315:18:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1289:2:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1293:18:4",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1286:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1286:26:4"
                  },
                  "nodeType": "YulIf",
                  "src": "1283:2:4"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1344:70:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1387:2:4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1391:4:4",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1383:3:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1383:13:4"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1402:2:4",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1398:3:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1398:7:4"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1379:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1379:27:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1408:4:4",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1375:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1375:38:4"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "1359:15:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1359:55:4"
                  },
                  "variables": [
                    {
                      "name": "array_1",
                      "nodeType": "YulTypedName",
                      "src": "1348:7:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array_1",
                        "nodeType": "YulIdentifier",
                        "src": "1430:7:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1439:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1423:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1423:19:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1423:19:4"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1490:24:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1499:5:4"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1506:5:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1492:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1492:20:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1492:20:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1465:6:4"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1473:2:4"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1461:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1461:15:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1478:4:4",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1457:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1457:26:4"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1485:3:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1454:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1454:35:4"
                  },
                  "nodeType": "YulIf",
                  "src": "1451:2:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "array_1",
                            "nodeType": "YulIdentifier",
                            "src": "1540:7:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1549:4:4",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1536:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1536:18:4"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1560:6:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1568:4:4",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1556:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1556:17:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1575:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "1523:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1523:55:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1523:55:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "1602:7:4"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1611:2:4"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1598:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1598:16:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1616:4:4",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1594:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1594:27:4"
                      },
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "1623:5:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1587:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1587:42:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1587:42:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1638:16:4",
                  "value": {
                    "name": "array_1",
                    "nodeType": "YulIdentifier",
                    "src": "1647:7:4"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1638:5:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_string",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1136:6:4",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1144:3:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "1152:5:4",
                "type": ""
              }
            ],
            "src": "1109:551:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1735:126:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1781:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1790:6:4"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1798:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1783:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1783:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1783:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1756:7:4"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1765:9:4"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1752:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1752:23:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1777:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1748:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1748:32:4"
                  },
                  "nodeType": "YulIf",
                  "src": "1745:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1816:39:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1845:9:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "1826:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1826:29:4"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1816:6:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1701:9:4",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1712:7:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1724:6:4",
                "type": ""
              }
            ],
            "src": "1665:196:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1953:183:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1999:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2008:6:4"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2016:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2001:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2001:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2001:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1974:7:4"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1983:9:4"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1970:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1970:23:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1995:2:4",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1966:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1966:32:4"
                  },
                  "nodeType": "YulIf",
                  "src": "1963:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2034:39:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2063:9:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2044:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2044:29:4"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2034:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2082:48:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2115:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2126:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2111:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2111:18:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2092:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2092:38:4"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2082:6:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1911:9:4",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1922:7:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1934:6:4",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1942:6:4",
                "type": ""
              }
            ],
            "src": "1866:270:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2245:240:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2291:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "2300:6:4"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "2308:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2293:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2293:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2293:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2266:7:4"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2275:9:4"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2262:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2262:23:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2287:2:4",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2258:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2258:32:4"
                  },
                  "nodeType": "YulIf",
                  "src": "2255:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2326:39:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2355:9:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2336:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2336:29:4"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2326:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2374:48:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2407:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2418:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2403:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2403:18:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2384:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2384:38:4"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2374:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2431:48:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2464:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2475:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2460:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2460:18:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2441:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2441:38:4"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2431:6:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2195:9:4",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2206:7:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2218:6:4",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2226:6:4",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2234:6:4",
                "type": ""
              }
            ],
            "src": "2141:344:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2664:543:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2710:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2719:6:4"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2727:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2712:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2712:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2712:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2685:7:4"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2694:9:4"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2681:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2681:23:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2706:2:4",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2677:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2677:32:4"
                  },
                  "nodeType": "YulIf",
                  "src": "2674:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2745:39:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2774:9:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2755:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2755:29:4"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2745:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2793:46:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2824:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2835:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2820:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2820:18:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2807:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2807:32:4"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2797:6:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2848:28:4",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2858:18:4",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2852:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2903:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2912:6:4"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2920:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2905:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2905:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2905:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2891:6:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2899:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2888:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2888:14:4"
                  },
                  "nodeType": "YulIf",
                  "src": "2885:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2938:70:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2980:9:4"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2991:6:4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2976:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2976:22:4"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3000:7:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_string_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "2948:27:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2948:60:4"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2938:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3017:48:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3050:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3061:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3046:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3046:18:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3033:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3033:32:4"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "3021:8:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3094:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "3103:6:4"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "3111:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3096:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3096:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3096:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "3080:8:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3090:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3077:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3077:16:4"
                  },
                  "nodeType": "YulIf",
                  "src": "3074:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3129:72:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3171:9:4"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "3182:8:4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3167:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3167:24:4"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3193:7:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_string_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "3139:27:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3139:62:4"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3129:6:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_array$_t_string_memory_ptr_$dyn_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2614:9:4",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2625:7:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2637:6:4",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2645:6:4",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2653:6:4",
                "type": ""
              }
            ],
            "src": "2490:717:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3309:319:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3355:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3364:6:4"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3372:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3357:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3357:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3357:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3330:7:4"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3339:9:4"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3326:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3326:23:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3351:2:4",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3322:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3322:32:4"
                  },
                  "nodeType": "YulIf",
                  "src": "3319:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3390:39:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3419:9:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "3400:18:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3400:29:4"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3390:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3438:46:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3469:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3480:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3465:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3465:18:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3452:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3452:32:4"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3442:6:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3527:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3536:6:4"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3544:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3529:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3529:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3529:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3499:6:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3507:18:4",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3496:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3496:30:4"
                  },
                  "nodeType": "YulIf",
                  "src": "3493:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3562:60:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3594:9:4"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3605:6:4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3590:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3590:22:4"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3614:7:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string",
                      "nodeType": "YulIdentifier",
                      "src": "3572:17:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3572:50:4"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3562:6:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3267:9:4",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3278:7:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3290:6:4",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3298:6:4",
                "type": ""
              }
            ],
            "src": "3212:416:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3740:466:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3786:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3795:6:4"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3803:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3788:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3788:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3788:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3761:7:4"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3770:9:4"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3757:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3757:23:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3782:2:4",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3753:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3753:32:4"
                  },
                  "nodeType": "YulIf",
                  "src": "3750:2:4"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3821:37:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3848:9:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3835:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3835:23:4"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3825:6:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3867:28:4",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3877:18:4",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3871:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3922:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3931:6:4"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3939:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3924:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3924:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3924:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3910:6:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3918:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3907:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3907:14:4"
                  },
                  "nodeType": "YulIf",
                  "src": "3904:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3957:60:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3989:9:4"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4000:6:4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3985:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3985:22:4"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4009:7:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string",
                      "nodeType": "YulIdentifier",
                      "src": "3967:17:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3967:50:4"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3957:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4026:48:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4059:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4070:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4055:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4055:18:4"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4042:12:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4042:32:4"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "4030:8:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4103:26:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "4112:6:4"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "4120:6:4"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4105:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4105:22:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4105:22:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "4089:8:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4099:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4086:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4086:16:4"
                  },
                  "nodeType": "YulIf",
                  "src": "4083:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4138:62:4",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4170:9:4"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "4181:8:4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4166:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4166:24:4"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4192:7:4"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string",
                      "nodeType": "YulIdentifier",
                      "src": "4148:17:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4148:52:4"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4138:6:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3698:9:4",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3709:7:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3721:6:4",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3729:6:4",
                "type": ""
              }
            ],
            "src": "3633:573:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4350:293:4",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4360:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4380:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4374:5:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4374:13:4"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "4364:6:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4396:12:4",
                  "value": {
                    "name": "end",
                    "nodeType": "YulIdentifier",
                    "src": "4405:3:4"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "4400:1:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4469:77:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4494:3:4"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "4499:1:4"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "4490:3:4"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4490:11:4"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4517:6:4"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4525:1:4"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4513:3:4"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4513:14:4"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "4529:4:4",
                                      "type": "",
                                      "value": "0x20"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "4509:3:4"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "4509:25:4"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "4503:5:4"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4503:32:4"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4483:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4483:53:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4483:53:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "4428:1:4"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4431:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4425:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4425:13:4"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "4439:21:4",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4441:17:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "4450:1:4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4453:4:4",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4446:3:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4446:12:4"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "4441:1:4"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "4421:3:4",
                    "statements": []
                  },
                  "src": "4417:129:4"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4572:33:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4585:3:4"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "4590:6:4"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "4581:3:4"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4581:16:4"
                            },
                            {
                              "name": "end",
                              "nodeType": "YulIdentifier",
                              "src": "4599:3:4"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4574:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4574:29:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4574:29:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "4561:1:4"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4564:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4558:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4558:13:4"
                  },
                  "nodeType": "YulIf",
                  "src": "4555:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4614:23:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4625:3:4"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "4630:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4621:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4621:16:4"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "4614:3:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4326:3:4",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4331:6:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4342:3:4",
                "type": ""
              }
            ],
            "src": "4211:432:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4749:102:4",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4759:26:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4771:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4782:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4767:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4767:18:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4759:4:4"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4801:9:4"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "4816:6:4"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4832:3:4",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4837:1:4",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4828:3:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4828:11:4"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4841:1:4",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "4824:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4824:19:4"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4812:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4812:32:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4794:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4794:51:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4794:51:4"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4718:9:4",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4729:6:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4740:4:4",
                "type": ""
              }
            ],
            "src": "4648:203:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5007:510:4",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5017:12:4",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5027:2:4",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5021:2:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5038:32:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5056:9:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5067:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5052:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5052:18:4"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "5042:6:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5086:9:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5097:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5079:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5079:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5079:21:4"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5109:17:4",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "5120:6:4"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "5113:3:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5135:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5155:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5149:5:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5149:13:4"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "5139:6:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "5178:6:4"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5186:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5171:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5171:22:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5171:22:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5202:25:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5213:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5224:2:4",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5209:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5209:18:4"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "5202:3:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5236:29:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5254:6:4"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5262:2:4"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5250:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5250:15:4"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "5240:6:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5274:13:4",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "5283:4:4"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "5278:1:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5345:146:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "5366:3:4"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "srcPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "5381:6:4"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "5375:5:4"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5375:13:4"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5398:3:4",
                                          "type": "",
                                          "value": "160"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5403:1:4",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "5394:3:4"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5394:11:4"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5407:1:4",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "5390:3:4"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5390:19:4"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "5371:3:4"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5371:39:4"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5359:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5359:52:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5359:52:4"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5424:19:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "5435:3:4"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "5440:2:4"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5431:3:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5431:12:4"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5424:3:4"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5456:25:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "5470:6:4"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "5478:2:4"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5466:3:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5466:15:4"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "5456:6:4"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "5307:1:4"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5310:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "5304:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5304:13:4"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "5318:18:4",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5320:14:4",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "5329:1:4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5332:1:4",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5325:3:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5325:9:4"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "5320:1:4"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "5300:3:4",
                    "statements": []
                  },
                  "src": "5296:195:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5500:11:4",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "5508:3:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5500:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4976:9:4",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4987:6:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4998:4:4",
                "type": ""
              }
            ],
            "src": "4856:661:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5617:92:4",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5627:26:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5639:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5650:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5635:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5635:18:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5627:4:4"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5669:9:4"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "5694:6:4"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "5687:6:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5687:14:4"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "5680:6:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5680:22:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5662:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5662:41:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5662:41:4"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5586:9:4",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5597:6:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5608:4:4",
                "type": ""
              }
            ],
            "src": "5522:187:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5821:87:4",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5831:26:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5843:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5854:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5839:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5839:18:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5831:4:4"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5873:9:4"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5888:6:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5896:4:4",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5884:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5884:17:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5866:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5866:36:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5866:36:4"
                }
              ]
            },
            "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5790:9:4",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5801:6:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5812:4:4",
                "type": ""
              }
            ],
            "src": "5714:194:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6087:253:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6104:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6115:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6097:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6097:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6097:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6138:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6149:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6134:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6134:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6154:2:4",
                        "type": "",
                        "value": "63"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6127:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6127:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6127:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6177:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6188:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6173:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6173:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6193:34:4",
                        "type": "",
                        "value": "Permissions: primary of operator"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6166:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6166:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6166:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6248:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6259:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6244:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6244:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6264:33:4",
                        "type": "",
                        "value": " lacks transactions:write scope"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6237:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6237:61:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6237:61:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6307:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6319:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6330:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6315:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6315:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6307:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_05144b1d419f5a88f682e1a2515100c19affc8db0b84deb3feed8c4b9207e2c4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6064:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6078:4:4",
                "type": ""
              }
            ],
            "src": "5913:427:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6519:180:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6536:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6547:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6529:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6529:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6529:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6570:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6581:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6566:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6566:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6586:2:4",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6559:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6559:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6559:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6609:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6620:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6605:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6605:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6625:32:4",
                        "type": "",
                        "value": "Permissions: caller is not VNF"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6598:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6598:60:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6598:60:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6667:26:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6679:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6690:2:4",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6675:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6675:18:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6667:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6496:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6510:4:4",
                "type": ""
              }
            ],
            "src": "6345:354:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6878:242:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6895:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6906:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6888:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6888:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6888:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6929:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6940:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6925:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6925:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6945:2:4",
                        "type": "",
                        "value": "52"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6918:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6918:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6918:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6968:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6979:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6964:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6964:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6984:34:4",
                        "type": "",
                        "value": "Permissions: operator is already"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6957:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6957:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6957:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7039:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7050:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7035:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7035:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7055:22:4",
                        "type": "",
                        "value": " mapped to a primary"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7028:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7028:50:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7028:50:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7087:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7099:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7110:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7095:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7095:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7087:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_23147ce352ce6205e2ba10425d01621a6242a83f56c0702ee655e035bc00be94__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6855:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6869:4:4",
                "type": ""
              }
            ],
            "src": "6704:416:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7299:229:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7316:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7327:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7309:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7309:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7309:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7350:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7361:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7346:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7346:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7366:2:4",
                        "type": "",
                        "value": "39"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7339:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7339:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7339:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7389:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7400:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7385:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7385:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7405:34:4",
                        "type": "",
                        "value": "Permissions: caller is not rotat"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7378:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7378:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7378:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7460:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7471:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7456:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7456:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7476:9:4",
                        "type": "",
                        "value": "ion key"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7449:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7449:37:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7449:37:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7495:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7507:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7518:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7503:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7503:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7495:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5ee335f24d2db8b0a7ea00d0ae197c7b28241fc73e613ce8d4b56d868e83ade4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7276:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7290:4:4",
                "type": ""
              }
            ],
            "src": "7125:403:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7707:230:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7724:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7735:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7717:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7717:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7717:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7758:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7769:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7754:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7754:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7774:2:4",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7747:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7747:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7747:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7797:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7808:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7793:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7793:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7813:34:4",
                        "type": "",
                        "value": "Permissions: permission may not "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7786:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7786:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7786:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7868:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7879:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7864:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7864:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7884:10:4",
                        "type": "",
                        "value": "be empty"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7857:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7857:38:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7857:38:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7904:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7916:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7927:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7912:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7912:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7904:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6b4f202014dd971425ace122e9637c1169c295dd661851d83f7fb0e1a27d27f7__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7684:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7698:4:4",
                "type": ""
              }
            ],
            "src": "7533:404:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8116:236:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8133:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8144:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8126:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8126:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8126:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8167:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8178:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8163:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8163:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8183:2:4",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8156:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8156:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8156:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8206:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8217:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8202:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8202:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8222:34:4",
                        "type": "",
                        "value": "Initializable: contract is alrea"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8195:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8195:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8195:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8277:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8288:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8273:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8273:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8293:16:4",
                        "type": "",
                        "value": "dy initialized"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8266:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8266:44:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8266:44:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8319:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8331:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8342:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8327:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8327:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8319:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8093:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8107:4:4",
                "type": ""
              }
            ],
            "src": "7942:410:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8531:234:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8548:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8559:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8541:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8541:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8541:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8582:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8593:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8578:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8578:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8598:2:4",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8571:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8571:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8571:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8621:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8632:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8617:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8617:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8637:34:4",
                        "type": "",
                        "value": "Permissions: primary of operator"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8610:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8610:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8610:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8692:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8703:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8688:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8688:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8708:14:4",
                        "type": "",
                        "value": " lacks scope"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8681:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8681:42:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8681:42:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8732:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8744:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8755:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8740:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8740:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8732:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_99b423b3f35acf77976de689c7279b40381dea2c9525e1a0e484817a4b98ff69__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8508:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8522:4:4",
                "type": ""
              }
            ],
            "src": "8357:408:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8944:234:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8961:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8972:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8954:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8954:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8954:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8995:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9006:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8991:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8991:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9011:2:4",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8984:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8984:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8984:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9034:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9045:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9030:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9030:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9050:34:4",
                        "type": "",
                        "value": "Permissions: caller is not permi"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9023:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9023:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9023:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9105:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9116:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9101:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9101:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9121:14:4",
                        "type": "",
                        "value": "ssioning key"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9094:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9094:42:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9094:42:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9145:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9157:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9168:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9153:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9153:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9145:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_cce92ac75c6bc1c2aec78ce47f67280b519b8ac65ba3c7c8c399cb4ae18e20b9__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8921:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8935:4:4",
                "type": ""
              }
            ],
            "src": "8770:408:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9357:249:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9374:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9385:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9367:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9367:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9367:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9408:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9419:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9404:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9404:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9424:2:4",
                        "type": "",
                        "value": "59"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9397:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9397:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9397:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9447:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9458:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9443:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9443:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9463:34:4",
                        "type": "",
                        "value": "Permissions: primary of operator"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9436:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9436:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9436:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9518:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9529:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9514:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9514:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9534:29:4",
                        "type": "",
                        "value": " lacks requested permission"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9507:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9507:57:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9507:57:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9573:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9585:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9596:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9581:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9581:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9573:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_d0b8e3b2511f65fa5861542db7c5004f53c28c4f8e0959b342e0a3b9e762e41c__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9334:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9348:4:4",
                "type": ""
              }
            ],
            "src": "9183:423:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9785:237:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9802:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9813:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9795:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9795:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9795:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9836:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9847:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9832:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9832:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9852:2:4",
                        "type": "",
                        "value": "47"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9825:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9825:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9825:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9875:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9886:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9871:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9871:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9891:34:4",
                        "type": "",
                        "value": "Permissions: operator not pointi"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9864:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9864:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9864:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9946:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9957:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9942:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9942:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9962:17:4",
                        "type": "",
                        "value": "ng to a primary"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9935:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9935:45:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9935:45:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9989:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10001:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10012:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9997:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9997:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9989:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_de3b1bdc5af527bde259e390bb3b47d013328f7f2eeb4dffcdf27373d0a27b76__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9762:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9776:4:4",
                "type": ""
              }
            ],
            "src": "9611:411:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10201:223:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10218:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10229:2:4",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10211:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10211:21:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10211:21:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10252:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10263:2:4",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10248:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10248:18:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10268:2:4",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10241:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10241:30:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10241:30:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10291:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10302:2:4",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10287:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10287:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10307:34:4",
                        "type": "",
                        "value": "Permissions: address is 0 addres"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10280:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10280:62:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10280:62:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10362:9:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10373:2:4",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10358:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10358:18:4"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10378:3:4",
                        "type": "",
                        "value": "s"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10351:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10351:31:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10351:31:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10391:27:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10403:9:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10414:3:4",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10399:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10399:19:4"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10391:4:4"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f367bf7af8623e9080db2f2ef33b650cdc9c194d34cf0a98161f0171e30294c1__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10178:9:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10192:4:4",
                "type": ""
              }
            ],
            "src": "10027:397:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10474:230:4",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10484:19:4",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10500:2:4",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10494:5:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10494:9:4"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "10484:6:4"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10512:58:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "10534:6:4"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "10550:4:4"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10556:2:4",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "10546:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10546:13:4"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10565:2:4",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "10561:3:4"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10561:7:4"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "10542:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10542:27:4"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10530:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10530:40:4"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "10516:10:4",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10645:22:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "10647:16:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10647:18:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10647:18:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "10588:10:4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10600:18:4",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "10585:2:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10585:34:4"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "10624:10:4"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "10636:6:4"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "10621:2:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10621:22:4"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "10582:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10582:62:4"
                  },
                  "nodeType": "YulIf",
                  "src": "10579:2:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10683:2:4",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "10687:10:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10676:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10676:22:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10676:22:4"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "10454:4:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "10463:6:4",
                "type": ""
              }
            ],
            "src": "10429:275:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10756:189:4",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10795:115:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "10816:3:4"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "10825:3:4",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "10830:10:4",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "10821:3:4"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10821:20:4"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10809:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10809:33:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10809:33:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10862:1:4",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10865:4:4",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10855:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10855:15:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10855:15:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "10890:3:4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10895:4:4",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10883:6:4"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10883:17:4"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10883:17:4"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10772:5:4"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10783:1:4",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "10779:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10779:6:4"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "10769:2:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10769:17:4"
                  },
                  "nodeType": "YulIf",
                  "src": "10766:2:4"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10919:20:4",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10930:5:4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10937:1:4",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10926:3:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10926:13:4"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "10919:3:4"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "10738:5:4",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "10748:3:4",
                "type": ""
              }
            ],
            "src": "10709:236:4"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10982:95:4",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10999:1:4",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11006:3:4",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11011:10:4",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "11002:3:4"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11002:20:4"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10992:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10992:31:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10992:31:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11039:1:4",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11042:4:4",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11032:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11032:15:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11032:15:4"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11063:1:4",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11066:4:4",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "11056:6:4"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11056:15:4"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11056:15:4"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "10950:127:4"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_array_string_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := 0xffffffffffffffff\n        if gt(_1, _3) { panic_error_0x41() }\n        let _4 := shl(5, _1)\n        let dst := allocate_memory(add(_4, _2))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, _4), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, _3) { revert(array, array) }\n            mstore(dst, abi_decode_string(add(add(offset, innerOffset), _2), end))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), array)\n        array := array_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_array$_t_string_memory_ptr_$dyn_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_string_dyn(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_array_string_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(value1, value1) }\n        value1 := abi_decode_string(add(headStart, offset), dataEnd)\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_string(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_string(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        let i := end\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), end) }\n        end := add(pos, length)\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_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\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_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_05144b1d419f5a88f682e1a2515100c19affc8db0b84deb3feed8c4b9207e2c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 63)\n        mstore(add(headStart, 64), \"Permissions: primary of operator\")\n        mstore(add(headStart, 96), \" lacks transactions:write scope\")\n        tail := add(headStart, 128)\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_23147ce352ce6205e2ba10425d01621a6242a83f56c0702ee655e035bc00be94__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"Permissions: operator is already\")\n        mstore(add(headStart, 96), \" mapped to a primary\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_5ee335f24d2db8b0a7ea00d0ae197c7b28241fc73e613ce8d4b56d868e83ade4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"Permissions: caller is not rotat\")\n        mstore(add(headStart, 96), \"ion key\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6b4f202014dd971425ace122e9637c1169c295dd661851d83f7fb0e1a27d27f7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"Permissions: permission may not \")\n        mstore(add(headStart, 96), \"be empty\")\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_99b423b3f35acf77976de689c7279b40381dea2c9525e1a0e484817a4b98ff69__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), \"Permissions: primary of operator\")\n        mstore(add(headStart, 96), \" lacks scope\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cce92ac75c6bc1c2aec78ce47f67280b519b8ac65ba3c7c8c399cb4ae18e20b9__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), \"Permissions: caller is not permi\")\n        mstore(add(headStart, 96), \"ssioning key\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d0b8e3b2511f65fa5861542db7c5004f53c28c4f8e0959b342e0a3b9e762e41c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 59)\n        mstore(add(headStart, 64), \"Permissions: primary of operator\")\n        mstore(add(headStart, 96), \" lacks requested permission\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_de3b1bdc5af527bde259e390bb3b47d013328f7f2eeb4dffcdf27373d0a27b76__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"Permissions: operator not pointi\")\n        mstore(add(headStart, 96), \"ng to a primary\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f367bf7af8623e9080db2f2ef33b650cdc9c194d34cf0a98161f0171e30294c1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"Permissions: address is 0 addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\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 panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
      "id": 4,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "133:9668:3:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "133:9668:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9225:396;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4812:32:4;;;4794:51;;4782:2;4767:18;9225:396:3;;;;;;;;2855:96;;;:::i;:::-;;;;;;;:::i;1304:75::-;1343:7;1369:3;;;;-1:-1:-1;;;;;1369:3:3;1304:75;;1385:150;;;;;;:::i;:::-;;:::i;:::-;;2346:258;;;;;;:::i;:::-;;:::i;9627:172::-;;;;;;:::i;:::-;;:::i;:::-;;;5687:14:4;;5680:22;5662:41;;5650:2;5635:18;9627:172:3;5617:92:4;1541:136:3;;;;;;:::i;:::-;;:::i;2957:283::-;;;;;;:::i;:::-;;:::i;2610:239::-;;;;;;:::i;:::-;;:::i;1078:121::-;;;:::i;3403:220::-;;;;;;:::i;:::-;;:::i;2194:146::-;;;;;;:::i;:::-;;:::i;1683:505::-;;;;;;:::i;:::-;;:::i;1205:93::-;;;;;;:::i;:::-;;:::i;3629:122::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3717:27:3;;;3691:7;3717:27;;;:17;:27;;;;;;;;3629:122;3757:382;;;;;;:::i;:::-;;:::i;3246:151::-;;;;;;:::i;:::-;;:::i;4145:283::-;;;;;;:::i;:::-;;:::i;9225:396::-;9323:7;9351:23;9359:10;9351:23;;;;;;;;;;;;:7;:23::i;:::-;9350:24;9342:77;;;;-1:-1:-1;;;9342:77:3;;7735:2:4;9342:77:3;;;7717:21:4;7774:2;7754:18;;;7747:30;7813:34;7793:18;;;7786:62;-1:-1:-1;;;7864:18:4;;;7857:38;7912:19;;9342:77:3;;;;;;;;;9429:15;9447:23;9461:8;9447:13;:23::i;:::-;9429:41;;9488:38;9506:7;9515:10;9488:17;:38::i;:::-;9480:110;;;;-1:-1:-1;;;9480:110:3;;9385:2:4;9480:110:3;;;9367:21:4;9424:2;9404:18;;;9397:30;9463:34;9443:18;;;9436:62;9534:29;9514:18;;;9507:57;9581:19;;9480:110:3;9357:249:4;9480:110:3;9607:7;9225:396;-1:-1:-1;;;9225:396:3:o;2855:96::-;2900:16;2935:9;2928:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2928:16:3;;;;;;;;;;;;;;;;;;;;;;;2855:96;:::o;1385:150::-;673:3;;;;;-1:-1:-1;;;;;673:3:3;659:10;:17;651:60;;;;-1:-1:-1;;;651:60:3;;;;;;;:::i;:::-;1472:4;-1:-1:-1;;;;;542:18:3;::::1;534:64;;;;-1:-1:-1::0;;;534:64:3::1;;;;;;;:::i;:::-;1524:4:::2;1488:20:::0;:26:::2;1509:4;-1:-1:-1::0;;;;;1488:26:3::2;-1:-1:-1::0;;;;;1488:26:3::2;;;;;;;;;;;;1515:5;1488:33;;;;;;:::i;:::-;::::0;;;::::2;::::0;;;;;::::2;::::0;;;:40;;;::::2;;-1:-1:-1::0;;1488:40:3;;::::2;::::0;;;::::2;::::0;;-1:-1:-1;;;1385:150:3:o;2346:258::-;673:3;;;;;-1:-1:-1;;;;;673:3:3;659:10;:17;651:60;;;;-1:-1:-1;;;651:60:3;;;;;;;:::i;:::-;2451:7;-1:-1:-1;;;;;542:18:3;::::1;534:64;;;;-1:-1:-1::0;;;534:64:3::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2470:31:3;;::::2;;::::0;;;:22:::2;:31;::::0;;;;;;;:47;;;;::::2;-1:-1:-1::0;;;;;;2470:47:3;;::::2;;::::0;;2527:17:::2;:26:::0;;;;;:37;;;;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;2574:9:::2;:23:::0;;2470:47;2574:23;::::2;::::0;;;;;::::2;::::0;;;;::::2;::::0;;::::2;::::0;;2346:258::o;9627:172::-;9699:4;9787:1;9769:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;9759:32;;;;;;9751:1;9733:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;9723:32;;;;;;:68;9715:77;;9627:172;;;;:::o;1541:136::-;673:3;;;;;-1:-1:-1;;;;;673:3:3;659:10;:17;651:60;;;;-1:-1:-1;;;651:60:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;1629:26:3;::::1;1665:5;1629:26:::0;;;:20:::1;:26;::::0;;;;;:33;;::::1;::::0;1656:5;;1629:33:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:41;;;::::1;;-1:-1:-1::0;;1629:41:3;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;1541:136:3:o;2957:283::-;-1:-1:-1;;;;;974:31:3;;;;;;;:22;:31;;;;;;;;;960:10;:45;952:102;;;;-1:-1:-1;;;952:102:3;;;;;;;:::i;:::-;3060:8;-1:-1:-1;;;;;542:18:3;::::1;534:64;;;;-1:-1:-1::0;;;534:64:3::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3088:27:3;;::::2;3127:1;3088:27:::0;;;:17:::2;:27;::::0;;;;;::::2;:41:::0;3080:106:::2;;;::::0;-1:-1:-1;;;3080:106:3;;6906:2:4;3080:106:3::2;::::0;::::2;6888:21:4::0;6945:2;6925:18;;;6918:30;6984:34;6964:18;;;6957:62;-1:-1:-1;;;7035:18:4;;;7028:50;7095:19;;3080:106:3::2;6878:242:4::0;3080:106:3::2;-1:-1:-1::0;;;;;;;3196:27:3;;::::2;;::::0;;;:17:::2;:27;::::0;;;;:37;;;;;::::2;-1:-1:-1::0;;;;;;3196:37:3;;::::2;;::::0;;2957:283::o;2610:239::-;-1:-1:-1;;;;;806:26:3;;;;;;;:17;:26;;;;;;;;;792:10;:40;784:92;;;;-1:-1:-1;;;784:92:3;;7327:2:4;784:92:3;;;7309:21:4;7366:2;7346:18;;;7339:30;7405:34;7385:18;;;7378:62;-1:-1:-1;;;7456:18:4;;;7449:37;7503:19;;784:92:3;7299:229:4;784:92:3;-1:-1:-1;;;;;;2742:31:3;;::::1;;::::0;;;:22:::1;:31;::::0;;;;;;;:50;;;;::::1;-1:-1:-1::0;;;;;;2742:50:3;;::::1;;::::0;;2802:17:::1;:26:::0;;;;;:40;;;;;::::1;::::0;::::1;;::::0;;2610:239::o;1078:121::-;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;;8144:2:4;3325:201:0;;;8126:21:4;8183:2;8163:18;;;8156:30;8222:34;8202:18;;;8195:62;-1:-1:-1;;;8273:18:4;;;8266:44;8327:19;;3325:201:0;8116:236:4;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;1148:1:3::1;1133:3:::0;;;::::1;-1:-1:-1::0;;;;;1133:3:3::1;1129:64;;1166:3;:16:::0;;-1:-1:-1;;;;;;1166:16:3::1;1172:10;1166:16:::0;::::1;;::::0;;1129:64:::1;3651:14:0::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:0;;;3721:14;;-1:-1:-1;5866:36:4;;3721:14:0;;5854:2:4;5839:18;3721:14:0;;;;;;;3647:99;1078:121:3;:::o;3403:220::-;-1:-1:-1;;;;;974:31:3;;;;;;;:22;:31;;;;;;;;;960:10;:45;952:102;;;;-1:-1:-1;;;952:102:3;;;;;;;:::i;:::-;3531:39:::1;3549:7;3558:11;3531:17;:39::i;:::-;3580:36;3595:7;3604:11;3580:14;:36::i;:::-;3403:220:::0;;;;:::o;2194:146::-;-1:-1:-1;;;;;2300:26:3;;2277:4;2300:26;;;:20;:26;;;;;;:33;;;;2327:5;;2300:33;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;2194:146:3;;;;:::o;1683:505::-;673:3;;;;;-1:-1:-1;;;;;673:3:3;659:10;:17;651:60;;;;-1:-1:-1;;;651:60:3;;;;;;;:::i;:::-;1817:9:::1;1812:174;1836:11;:18;1832:1;:22;1812:174;;;1875:24;1902:11;1914:1;1902:14;;;;;;-1:-1:-1::0;;;1902:14:3::1;;;;;;;;;;;;;;;1875:41;;1971:4;1930:20:::0;:26:::1;1951:4;-1:-1:-1::0;;;;;1930:26:3::1;-1:-1:-1::0;;;;;1930:26:3::1;;;;;;;;;;;;1957:10;1930:38;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:45;;;::::1;;-1:-1:-1::0;;1930:45:3;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;1856:3:3;::::1;::::0;::::1;:::i;:::-;;;;1812:174;;;;2000:9;1995:187;2019:14;:21;2015:1;:25;1995:187;;;2061:27;2091:14;2106:1;2091:17;;;;;;-1:-1:-1::0;;;2091:17:3::1;;;;;;;;;;;;;;;2061:47;;2166:5;2122:20;:26;2143:4;-1:-1:-1::0;;;;;2122:26:3::1;-1:-1:-1::0;;;;;2122:26:3::1;;;;;;;;;;;;2149:13;2122:41;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:49;;;::::1;;-1:-1:-1::0;;2122:49:3;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;2042:3:3;::::1;::::0;::::1;:::i;:::-;;;;1995:187;;1205:93:::0;673:3;;;;;-1:-1:-1;;;;;673:3:3;659:10;:17;651:60;;;;-1:-1:-1;;;651:60:3;;;;;;;:::i;:::-;1265:4;-1:-1:-1;;;;;542:18:3;::::1;534:64;;;;-1:-1:-1::0;;;534:64:3::1;;;;;;;:::i;:::-;-1:-1:-1::0;1281:3:3::2;:10:::0;;-1:-1:-1;;;;;1281:10:3;;::::2;::::0;::::2;-1:-1:-1::0;;;;;;1281:10:3;;::::2;::::0;;;::::2;::::0;;1205:93::o;3757:382::-;-1:-1:-1;;;;;3856:27:3;;;3819:7;3856:27;;;:17;:27;;;;;;3819:7;;3856:27;3901:21;3893:81;;;;-1:-1:-1;;;3893:81:3;;9813:2:4;3893:81:3;;;9795:21:4;9852:2;9832:18;;;9825:30;9891:34;9871:18;;;9864:62;-1:-1:-1;;;9942:18:4;;;9935:45;9997:19;;3893:81:3;9785:237:4;3893:81:3;3992:48;4010:7;3992:48;;;;;;;;;;;;;-1:-1:-1;;;3992:48:3;;;:17;:48::i;:::-;3984:124;;;;-1:-1:-1;;;3984:124:3;;6115:2:4;3984:124:3;;;6097:21:4;6154:2;6134:18;;;6127:30;6193:34;6173:18;;;6166:62;6264:33;6244:18;;;6237:61;6315:19;;3984:124:3;6087:253:4;3984:124:3;4125:7;3757:382;-1:-1:-1;;3757:382:3:o;3246:151::-;-1:-1:-1;;;;;974:31:3;;;;;;;:22;:31;;;;;;;;;960:10;:45;952:102;;;;-1:-1:-1;;;952:102:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3350:27:3::1;3388:1;3350:27:::0;;;:17:::1;:27;::::0;;;;:40;;-1:-1:-1;;;;;;3350:40:3::1;::::0;;-1:-1:-1;3246:151:3:o;4145:283::-;4237:7;4256:15;4274:23;4288:8;4274:13;:23::i;:::-;4256:41;;4315:33;4333:7;4342:5;4315:17;:33::i;:::-;4307:90;;;;-1:-1:-1;;;4307:90:3;;8559:2:4;4307:90:3;;;8541:21:4;8598:2;8578:18;;;8571:30;8637:34;8617:18;;;8610:62;-1:-1:-1;;;8688:18:4;;;8681:42;8740:19;;4307:90:3;8531:234:4;14:173;82:20;;-1:-1:-1;;;;;131:31:4;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:912::-;245:5;298:3;291:4;283:6;279:17;275:27;265:2;;320:5;313;306:20;265:2;360:6;347:20;386:4;409:18;446:2;442;439:10;436:2;;;452:18;;:::i;:::-;498:2;495:1;491:10;521:28;545:2;541;537:11;521:28;:::i;:::-;583:15;;;614:12;;;;646:15;;;680;;;676:24;;673:33;-1:-1:-1;670:2:4;;;723:5;716;709:20;670:2;749:5;740:14;;763:312;777:2;774:1;771:9;763:312;;;854:3;841:17;890:2;877:11;874:19;871:2;;;910:5;903;896:20;871:2;943:57;996:3;991:2;977:11;969:6;965:24;961:33;943:57;:::i;:::-;931:70;;-1:-1:-1;795:1:4;788:9;;;;;1021:12;;;;1053;;763:312;;;-1:-1:-1;1093:5:4;255:849;-1:-1:-1;;;;;;;;255:849:4:o;1109:551::-;1152:5;1205:3;1198:4;1190:6;1186:17;1182:27;1172:2;;1227:5;1220;1213:20;1172:2;1267:6;1254:20;1293:18;1289:2;1286:26;1283:2;;;1315:18;;:::i;:::-;1359:55;1402:2;1383:13;;-1:-1:-1;;1379:27:4;1408:4;1375:38;1359:55;:::i;:::-;1439:2;1430:7;1423:19;1485:3;1478:4;1473:2;1465:6;1461:15;1457:26;1454:35;1451:2;;;1506:5;1499;1492:20;1451:2;1575;1568:4;1560:6;1556:17;1549:4;1540:7;1536:18;1523:55;1598:16;;;1616:4;1594:27;1587:42;;;;1602:7;1162:498;-1:-1:-1;;1162:498:4:o;1665:196::-;1724:6;1777:2;1765:9;1756:7;1752:23;1748:32;1745:2;;;1798:6;1790;1783:22;1745:2;1826:29;1845:9;1826:29;:::i;1866:270::-;1934:6;1942;1995:2;1983:9;1974:7;1970:23;1966:32;1963:2;;;2016:6;2008;2001:22;1963:2;2044:29;2063:9;2044:29;:::i;:::-;2034:39;;2092:38;2126:2;2115:9;2111:18;2092:38;:::i;:::-;2082:48;;1953:183;;;;;:::o;2141:344::-;2218:6;2226;2234;2287:2;2275:9;2266:7;2262:23;2258:32;2255:2;;;2308:6;2300;2293:22;2255:2;2336:29;2355:9;2336:29;:::i;:::-;2326:39;;2384:38;2418:2;2407:9;2403:18;2384:38;:::i;:::-;2374:48;;2441:38;2475:2;2464:9;2460:18;2441:38;:::i;:::-;2431:48;;2245:240;;;;;:::o;2490:717::-;2637:6;2645;2653;2706:2;2694:9;2685:7;2681:23;2677:32;2674:2;;;2727:6;2719;2712:22;2674:2;2755:29;2774:9;2755:29;:::i;:::-;2745:39;;2835:2;2824:9;2820:18;2807:32;2858:18;2899:2;2891:6;2888:14;2885:2;;;2920:6;2912;2905:22;2885:2;2948:60;3000:7;2991:6;2980:9;2976:22;2948:60;:::i;:::-;2938:70;;3061:2;3050:9;3046:18;3033:32;3017:48;;3090:2;3080:8;3077:16;3074:2;;;3111:6;3103;3096:22;3074:2;;3139:62;3193:7;3182:8;3171:9;3167:24;3139:62;:::i;:::-;3129:72;;;2664:543;;;;;:::o;3212:416::-;3290:6;3298;3351:2;3339:9;3330:7;3326:23;3322:32;3319:2;;;3372:6;3364;3357:22;3319:2;3400:29;3419:9;3400:29;:::i;:::-;3390:39;;3480:2;3469:9;3465:18;3452:32;3507:18;3499:6;3496:30;3493:2;;;3544:6;3536;3529:22;3493:2;3572:50;3614:7;3605:6;3594:9;3590:22;3572:50;:::i;:::-;3562:60;;;3309:319;;;;;:::o;3633:573::-;3721:6;3729;3782:2;3770:9;3761:7;3757:23;3753:32;3750:2;;;3803:6;3795;3788:22;3750:2;3848:9;3835:23;3877:18;3918:2;3910:6;3907:14;3904:2;;;3939:6;3931;3924:22;3904:2;3967:50;4009:7;4000:6;3989:9;3985:22;3967:50;:::i;:::-;3957:60;;4070:2;4059:9;4055:18;4042:32;4026:48;;4099:2;4089:8;4086:16;4083:2;;;4120:6;4112;4105:22;4083:2;;4148:52;4192:7;4181:8;4170:9;4166:24;4148:52;:::i;4211:432::-;4342:3;4380:6;4374:13;4405:3;4417:129;4431:6;4428:1;4425:13;4417:129;;;4529:4;4513:14;;;4509:25;;4503:32;4490:11;;;4483:53;4446:12;4417:129;;;4564:6;4561:1;4558:13;4555:2;;;4599:3;4590:6;4585:3;4581:16;4574:29;4555:2;-1:-1:-1;4621:16:4;;;;;4350:293;-1:-1:-1;;4350:293:4:o;4856:661::-;5027:2;5079:21;;;5149:13;;5052:18;;;5171:22;;;4998:4;;5027:2;5250:15;;;;5224:2;5209:18;;;4998:4;5296:195;5310:6;5307:1;5304:13;5296:195;;;5375:13;;-1:-1:-1;;;;;5371:39:4;5359:52;;5466:15;;;;5431:12;;;;5407:1;5325:9;5296:195;;;-1:-1:-1;5508:3:4;;5007:510;-1:-1:-1;;;;;;5007:510:4:o;6345:354::-;6547:2;6529:21;;;6586:2;6566:18;;;6559:30;6625:32;6620:2;6605:18;;6598:60;6690:2;6675:18;;6519:180::o;8770:408::-;8972:2;8954:21;;;9011:2;8991:18;;;8984:30;9050:34;9045:2;9030:18;;9023:62;-1:-1:-1;;;9116:2:4;9101:18;;9094:42;9168:3;9153:19;;8944:234::o;10027:397::-;10229:2;10211:21;;;10268:2;10248:18;;;10241:30;10307:34;10302:2;10287:18;;10280:62;-1:-1:-1;;;10373:2:4;10358:18;;10351:31;10414:3;10399:19;;10201:223::o;10429:275::-;10500:2;10494:9;10565:2;10546:13;;-1:-1:-1;;10542:27:4;10530:40;;10600:18;10585:34;;10621:22;;;10582:62;10579:2;;;10647:18;;:::i;:::-;10683:2;10676:22;10474:230;;-1:-1:-1;10474:230:4:o;10709:236::-;10748:3;-1:-1:-1;;10769:17:4;;10766:2;;;-1:-1:-1;;;10809:33:4;;10865:4;10862:1;10855:15;10895:4;10816:3;10883:17;10766:2;-1:-1:-1;10937:1:4;10926:13;;10756:189::o;10950:127::-;11011:10;11006:3;11002:20;10999:1;10992:31;11042:4;11039:1;11032:15;11066:4;11063:1;11056:15",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.4;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\n\ncontract Permissions is Initializable {\n    address VNF;\n    mapping(address => mapping(string => bool)) private addressToPermissions;\n\n    mapping(address => address) private primaryToPermissioning;\n    mapping(address => address) private primaryToRotation;\n    mapping(address => address) private operatorToPrimary;\n    address[] private primaries;\n\n    modifier non0Address(address addr) {\n        require(addr != address(0), \"Permissions: address is 0 address\");\n        _;\n    }\n\n    modifier onlyVnf() {\n        require(msg.sender == VNF, \"Permissions: caller is not VNF\");\n        _;\n    }\n\n    modifier onlyRotation(address primary) {\n        require(msg.sender == primaryToRotation[primary], \"Permissions: caller is not rotation key\");\n        _;\n    }\n\n    modifier onlyPermissions(address primary) {\n        require(msg.sender == primaryToPermissioning[primary], \"Permissions: caller is not permissioning key\");\n        _;\n    }\n\n    function initialize() public initializer {\n        if (VNF == address(0)) {\n            VNF = msg.sender;\n        }\n    }\n\n    function rotateVNF(address addr) public onlyVnf non0Address(addr) {\n        VNF = addr;\n    }\n\n    function getVNF() public view returns (address) {\n        return VNF;\n    }\n\n    function addAddressScope(address addr, string memory scope) public onlyVnf non0Address(addr) {\n        addressToPermissions[addr][scope] = true;\n    }\n\n    function removeAddressScope(address addr, string memory scope) public onlyVnf {\n        addressToPermissions[addr][scope] = false;\n    }\n\n    function updateAddressScopes(address addr, string[] memory scopesToAdd, string[] memory scopesToRemove) public onlyVnf {\n        for (uint256 i = 0; i < scopesToAdd.length; i++) {\n            string memory scopeToAdd = scopesToAdd[i];\n            addressToPermissions[addr][scopeToAdd] = true;\n        }\n        for (uint256 i = 0; i < scopesToRemove.length; i++) {\n            string memory scopeToRemove = scopesToRemove[i];\n            addressToPermissions[addr][scopeToRemove] = false;\n        }\n    }\n\n    function checkAddressScope(address addr, string memory scope) public view returns (bool) {\n        return addressToPermissions[addr][scope];\n    }\n\n    function addPrimary(address primary, address permissioning, address rotation) public onlyVnf non0Address(primary) {\n        primaryToPermissioning[primary] = permissioning;\n        primaryToRotation[primary] = rotation;\n        primaries.push(primary);\n    }\n\n    function rotatePermissioning(address primary, address newPermissioning, address newRotation) public onlyRotation(primary) {\n        primaryToPermissioning[primary] = newPermissioning;\n        primaryToRotation[primary] = newRotation;\n    }\n\n    function getPrimaries() public view returns (address[] memory) {\n        return primaries;\n    }\n\n    function addOperatorKey(address primary, address operator) public onlyPermissions(primary) non0Address(operator) {\n        require(operatorToPrimary[operator] == address(0), \"Permissions: operator is already mapped to a primary\");\n        operatorToPrimary[operator] = primary;\n    }\n\n    function removeOperatorKey(address primary, address operator) public onlyPermissions(primary) {\n        operatorToPrimary[operator] = address(0);\n    }\n\n    function rotateOperatorKey(address primary, address newOperator, address oldOperator) public onlyPermissions(primary) {\n        removeOperatorKey(primary, oldOperator);\n        addOperatorKey(primary, newOperator);\n    }\n\n    function lookupPrimary(address operator) public view returns (address) {\n        return operatorToPrimary[operator];\n    }\n\n    function checkOperator(address operator) public view returns (address) {\n        address primary = operatorToPrimary[operator];\n        require(primary != address(0), \"Permissions: operator not pointing to a primary\");\n        require(checkAddressScope(primary, \"transactions:write\"), \"Permissions: primary of operator lacks transactions:write scope\");\n        return primary;\n    }\n\n    function checkOperatorWithScope(address operator, string memory scope) public view returns (address) {\n        address primary = checkOperator(operator);\n        require(checkAddressScope(primary, scope), \"Permissions: primary of operator lacks scope\");\n        return primary;\n    }\n\n    function getPermissionOfCredentialTypeHash(bytes2 credentialType) private pure returns (string memory) {\n        string memory permissionCredentialIssue = \"credential:issue\";\n        string memory permissionCredentialIdentityIssue = \"credential:identityissue\";\n        string memory permissionCredentialContactIssue = \"credential:contactissue\";\n\n        if(credentialType == 0x7808) {return permissionCredentialIssue;} // Assessment\n        else if(credentialType == 0x41ec) {return permissionCredentialIssue;} // AssessmentV1.0\n        else if(credentialType == 0xaf29) {return permissionCredentialIssue;} // AssessmentV1.1\n        else if(credentialType == 0x0024) {return permissionCredentialIssue;} // Badge\n        else if(credentialType == 0xc184) {return permissionCredentialIssue;} // BadgeV1.1\n        else if(credentialType == 0x8684) {return permissionCredentialIssue;} // Certification\n        else if(credentialType == 0x5df0) {return permissionCredentialIssue;} // CertificationV1.0\n        else if(credentialType == 0xade9) {return permissionCredentialIssue;} // CertificationV1.1\n        else if(credentialType == 0x2096) {return permissionCredentialIssue;} // Course\n        else if(credentialType == 0xb037) {return permissionCredentialIssue;} // CourseAttendanceV1.0\n        else if(credentialType == 0xc385) {return permissionCredentialIssue;} // CourseAttendanceV1.1\n        else if(credentialType == 0x5f0e) {return permissionCredentialIssue;} // CourseCompletionV1.0\n        else if(credentialType == 0x4b80) {return permissionCredentialIssue;} // CourseCompletionV1.1\n        else if(credentialType == 0xf2dc) {return permissionCredentialIssue;} // CourseRegistrationV1.0\n        else if(credentialType == 0x955b) {return permissionCredentialIssue;} // CourseRegistrationV1.1\n        else if(credentialType == 0x7516) {return permissionCredentialIssue;} // CurrentEmploymentPosition\n        else if(credentialType == 0xeea2) {return permissionCredentialIdentityIssue;} // DriversLicenseV1.0\n        else if(credentialType == 0xb89f) {return permissionCredentialIssue;} // EducationDegree\n        else if(credentialType == 0x294a) {return permissionCredentialIssue;} // EducationDegreeGraduationV1.0\n        else if(credentialType == 0x8642) {return permissionCredentialIssue;} // EducationDegreeGraduationV1.1\n        else if(credentialType == 0x9b9f) {return permissionCredentialIssue;} // EducationDegreeRegistrationV1.0\n        else if(credentialType == 0x5ab6) {return permissionCredentialIssue;} // EducationDegreeRegistrationV1.1\n        else if(credentialType == 0xb139) {return permissionCredentialIssue;} // EducationDegreeStudyV1.0\n        else if(credentialType == 0xa214) {return permissionCredentialIssue;} // EducationDegreeStudyV1.1\n        else if(credentialType == 0x969c) {return permissionCredentialContactIssue;} // Email\n        else if(credentialType == 0x8f07) {return permissionCredentialContactIssue;} // EmailV1.0\n        else if(credentialType == 0x764c) {return permissionCredentialIssue;} // EmploymentCurrentV1.0\n        else if(credentialType == 0xdb4c) {return permissionCredentialIssue;} // EmploymentCurrentV1.1\n        else if(credentialType == 0x7e15) {return permissionCredentialIssue;} // EmploymentPastV1.0\n        else if(credentialType == 0xf4aa) {return permissionCredentialIssue;} // EmploymentPastV1.1\n        else if(credentialType == 0x851f) {return permissionCredentialIdentityIssue;} // IdDocument\n        else if(credentialType == 0xfeab) {return permissionCredentialIdentityIssue;} // IdDocumentV1.0\n        else if(credentialType == 0xefca) {return permissionCredentialIssue;} // LicenseV1.0\n        else if(credentialType == 0xd8ae) {return permissionCredentialIssue;} // LicenseV1.1\n        else if(credentialType == 0xdeef) {return permissionCredentialIdentityIssue;} // NationalIdCardV1.0\n        else if(credentialType == 0x2936) {return permissionCredentialIssue;} // OpenBadgeCredential\n        else if(credentialType == 0x86bf) {return permissionCredentialIssue;} // OpenBadgeV1.0\n        else if(credentialType == 0x5b0e) {return permissionCredentialIssue;} // OpenBadgeV2.0\n        else if(credentialType == 0x7b17) {return permissionCredentialIdentityIssue;} // PassportV1.0\n        else if(credentialType == 0x29d2) {return permissionCredentialIssue;} // PastEmploymentPosition\n        else if(credentialType == 0x63dc) {return permissionCredentialContactIssue;} // Phone\n        else if(credentialType == 0x4ffb) {return permissionCredentialContactIssue;} // PhoneV1.0\n        else if(credentialType == 0xf052) {return permissionCredentialIssue;} // ProofOfAgeV1.0\n        else if(credentialType == 0xa004) {return permissionCredentialIdentityIssue;} // ResidentPermitV1.0\n        return \"\";\n    }\n\n    function checkOperatorPermission(address operator, string memory permission) public view returns (address) {\n        require(!isEqual(permission, \"\"), \"Permissions: permission may not be empty\");\n        address primary = checkOperator(operator);\n        require(checkAddressScope(primary, permission), \"Permissions: primary of operator lacks requested permission\");\n        return primary;\n    }\n\n    function isEqual(string memory a, string memory b) public pure returns (bool) {\n        return (keccak256(abi.encodePacked((a))) == keccak256(abi.encodePacked((b))));\n    }\n}\n",
  "sourcePath": "/Users/nassan/s/vclworld/monorepo/contracts/permissions/contracts/Permissions.sol",
  "ast": {
    "absolutePath": "project:/contracts/Permissions.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        498
      ],
      "Initializable": [
        168
      ],
      "Permissions": [
        1391
      ]
    },
    "id": 1392,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 533,
        "literals": [
          "solidity",
          "0.8",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:22:3"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "id": 534,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 1392,
        "sourceUnit": 169,
        "src": "56:75:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 535,
              "name": "Initializable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 168,
              "src": "157:13:3"
            },
            "id": 536,
            "nodeType": "InheritanceSpecifier",
            "src": "157:13:3"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1391,
        "linearizedBaseContracts": [
          1391,
          168
        ],
        "name": "Permissions",
        "nameLocation": "142:11:3",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 538,
            "mutability": "mutable",
            "name": "VNF",
            "nameLocation": "185:3:3",
            "nodeType": "VariableDeclaration",
            "scope": 1391,
            "src": "177:11:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 537,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "177:7:3",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 544,
            "mutability": "mutable",
            "name": "addressToPermissions",
            "nameLocation": "246:20:3",
            "nodeType": "VariableDeclaration",
            "scope": 1391,
            "src": "194:72:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$",
              "typeString": "mapping(address => mapping(string => bool))"
            },
            "typeName": {
              "id": 543,
              "keyType": {
                "id": 539,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "202:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "194:43:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$",
                "typeString": "mapping(address => mapping(string => bool))"
              },
              "valueType": {
                "id": 542,
                "keyType": {
                  "id": 540,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "221:6:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "nodeType": "Mapping",
                "src": "213:23:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bool_$",
                  "typeString": "mapping(string => bool)"
                },
                "valueType": {
                  "id": 541,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "231:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 548,
            "mutability": "mutable",
            "name": "primaryToPermissioning",
            "nameLocation": "309:22:3",
            "nodeType": "VariableDeclaration",
            "scope": 1391,
            "src": "273:58:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 547,
              "keyType": {
                "id": 545,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "281:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "273:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 546,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "292:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 552,
            "mutability": "mutable",
            "name": "primaryToRotation",
            "nameLocation": "373:17:3",
            "nodeType": "VariableDeclaration",
            "scope": 1391,
            "src": "337:53:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 551,
              "keyType": {
                "id": 549,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "345:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "337:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 550,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "356:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 556,
            "mutability": "mutable",
            "name": "operatorToPrimary",
            "nameLocation": "432:17:3",
            "nodeType": "VariableDeclaration",
            "scope": 1391,
            "src": "396:53:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 555,
              "keyType": {
                "id": 553,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "404:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "396:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 554,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "415:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 559,
            "mutability": "mutable",
            "name": "primaries",
            "nameLocation": "473:9:3",
            "nodeType": "VariableDeclaration",
            "scope": 1391,
            "src": "455:27:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_address_$dyn_storage",
              "typeString": "address[]"
            },
            "typeName": {
              "baseType": {
                "id": 557,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "455:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "id": 558,
              "nodeType": "ArrayTypeName",
              "src": "455:9:3",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                "typeString": "address[]"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 574,
              "nodeType": "Block",
              "src": "524:92:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 564,
                          "name": "addr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 561,
                          "src": "542:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "558:1:3",
                              "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": 566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "550:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 565,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "550:7:3",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "550:10:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "542:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a206164647265737320697320302061646472657373",
                        "id": 570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "562:35:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f367bf7af8623e9080db2f2ef33b650cdc9c194d34cf0a98161f0171e30294c1",
                          "typeString": "literal_string \"Permissions: address is 0 address\""
                        },
                        "value": "Permissions: address is 0 address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f367bf7af8623e9080db2f2ef33b650cdc9c194d34cf0a98161f0171e30294c1",
                          "typeString": "literal_string \"Permissions: address is 0 address\""
                        }
                      ],
                      "id": 563,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "534:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "534:64:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 572,
                  "nodeType": "ExpressionStatement",
                  "src": "534:64:3"
                },
                {
                  "id": 573,
                  "nodeType": "PlaceholderStatement",
                  "src": "608:1:3"
                }
              ]
            },
            "id": 575,
            "name": "non0Address",
            "nameLocation": "498:11:3",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 561,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "518:4:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 575,
                  "src": "510:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 560,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "510:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "509:14:3"
            },
            "src": "489:127:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 586,
              "nodeType": "Block",
              "src": "641:88:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 578,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "659:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "659:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 580,
                          "name": "VNF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 538,
                          "src": "673:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "659:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e46",
                        "id": 582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "678:32:3",
                        "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": 577,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "651:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "651:60:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 584,
                  "nodeType": "ExpressionStatement",
                  "src": "651:60:3"
                },
                {
                  "id": 585,
                  "nodeType": "PlaceholderStatement",
                  "src": "721:1:3"
                }
              ]
            },
            "id": 587,
            "name": "onlyVnf",
            "nameLocation": "631:7:3",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 576,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "638:2:3"
            },
            "src": "622:107:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 602,
              "nodeType": "Block",
              "src": "774:120:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 592,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "792:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "792:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 594,
                            "name": "primaryToRotation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 552,
                            "src": "806:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 596,
                          "indexExpression": {
                            "id": 595,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 589,
                            "src": "824:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "806:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "792:40:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2063616c6c6572206973206e6f7420726f746174696f6e206b6579",
                        "id": 598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "834:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5ee335f24d2db8b0a7ea00d0ae197c7b28241fc73e613ce8d4b56d868e83ade4",
                          "typeString": "literal_string \"Permissions: caller is not rotation key\""
                        },
                        "value": "Permissions: caller is not rotation key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5ee335f24d2db8b0a7ea00d0ae197c7b28241fc73e613ce8d4b56d868e83ade4",
                          "typeString": "literal_string \"Permissions: caller is not rotation key\""
                        }
                      ],
                      "id": 591,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "784:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "784:92:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 600,
                  "nodeType": "ExpressionStatement",
                  "src": "784:92:3"
                },
                {
                  "id": 601,
                  "nodeType": "PlaceholderStatement",
                  "src": "886:1:3"
                }
              ]
            },
            "id": 603,
            "name": "onlyRotation",
            "nameLocation": "744:12:3",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 589,
                  "mutability": "mutable",
                  "name": "primary",
                  "nameLocation": "765:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 603,
                  "src": "757:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 588,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "757:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "756:17:3"
            },
            "src": "735:159:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 618,
              "nodeType": "Block",
              "src": "942:130:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 608,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "960:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "960:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 610,
                            "name": "primaryToPermissioning",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 548,
                            "src": "974:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 612,
                          "indexExpression": {
                            "id": 611,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 605,
                            "src": "997:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "974:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "960:45:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2063616c6c6572206973206e6f74207065726d697373696f6e696e67206b6579",
                        "id": 614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1007:46:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cce92ac75c6bc1c2aec78ce47f67280b519b8ac65ba3c7c8c399cb4ae18e20b9",
                          "typeString": "literal_string \"Permissions: caller is not permissioning key\""
                        },
                        "value": "Permissions: caller is not permissioning key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cce92ac75c6bc1c2aec78ce47f67280b519b8ac65ba3c7c8c399cb4ae18e20b9",
                          "typeString": "literal_string \"Permissions: caller is not permissioning key\""
                        }
                      ],
                      "id": 607,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "952:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "952:102:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 616,
                  "nodeType": "ExpressionStatement",
                  "src": "952:102:3"
                },
                {
                  "id": 617,
                  "nodeType": "PlaceholderStatement",
                  "src": "1064:1:3"
                }
              ]
            },
            "id": 619,
            "name": "onlyPermissions",
            "nameLocation": "909:15:3",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 605,
                  "mutability": "mutable",
                  "name": "primary",
                  "nameLocation": "933:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 619,
                  "src": "925:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 604,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "925:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "924:17:3"
            },
            "src": "900:172:3",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 637,
              "nodeType": "Block",
              "src": "1119:80:3",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 624,
                      "name": "VNF",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 538,
                      "src": "1133:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1148:1:3",
                          "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": 626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1140:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1140:7:3",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 628,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1140:10:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1133:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 636,
                  "nodeType": "IfStatement",
                  "src": "1129:64:3",
                  "trueBody": {
                    "id": 635,
                    "nodeType": "Block",
                    "src": "1152:41:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 630,
                            "name": "VNF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 538,
                            "src": "1166:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 631,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "1172:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "1172:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1166:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 634,
                        "nodeType": "ExpressionStatement",
                        "src": "1166:16:3"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "8129fc1c",
            "id": 638,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 622,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 621,
                  "name": "initializer",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 70,
                  "src": "1107:11:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "1107:11:3"
              }
            ],
            "name": "initialize",
            "nameLocation": "1087:10:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 620,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1097:2:3"
            },
            "returnParameters": {
              "id": 623,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1119:0:3"
            },
            "scope": 1391,
            "src": "1078:121:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 652,
              "nodeType": "Block",
              "src": "1271:27:3",
              "statements": [
                {
                  "expression": {
                    "id": 650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 648,
                      "name": "VNF",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 538,
                      "src": "1281:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 649,
                      "name": "addr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 640,
                      "src": "1287:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1281:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 651,
                  "nodeType": "ExpressionStatement",
                  "src": "1281:10:3"
                }
              ]
            },
            "functionSelector": "bdb1a732",
            "id": 653,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 643,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 642,
                  "name": "onlyVnf",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 587,
                  "src": "1245:7:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "1245:7:3"
              },
              {
                "arguments": [
                  {
                    "id": 645,
                    "name": "addr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 640,
                    "src": "1265:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 646,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 644,
                  "name": "non0Address",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 575,
                  "src": "1253:11:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "1253:17:3"
              }
            ],
            "name": "rotateVNF",
            "nameLocation": "1214:9:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 640,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "1232:4:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 653,
                  "src": "1224:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 639,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1224:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1223:14:3"
            },
            "returnParameters": {
              "id": 647,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1271:0:3"
            },
            "scope": 1391,
            "src": "1205:93:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 660,
              "nodeType": "Block",
              "src": "1352:27:3",
              "statements": [
                {
                  "expression": {
                    "id": 658,
                    "name": "VNF",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 538,
                    "src": "1369:3:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 657,
                  "id": 659,
                  "nodeType": "Return",
                  "src": "1362:10:3"
                }
              ]
            },
            "functionSelector": "34ca4b64",
            "id": 661,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getVNF",
            "nameLocation": "1313:6:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1319:2:3"
            },
            "returnParameters": {
              "id": 657,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 656,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 661,
                  "src": "1343:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1343:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1342:9:3"
            },
            "scope": 1391,
            "src": "1304:75:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 681,
              "nodeType": "Block",
              "src": "1478:57:3",
              "statements": [
                {
                  "expression": {
                    "id": 679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 673,
                          "name": "addressToPermissions",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 544,
                          "src": "1488:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(string memory => bool))"
                          }
                        },
                        "id": 676,
                        "indexExpression": {
                          "id": 674,
                          "name": "addr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 663,
                          "src": "1509:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1488:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bool_$",
                          "typeString": "mapping(string memory => bool)"
                        }
                      },
                      "id": 677,
                      "indexExpression": {
                        "id": 675,
                        "name": "scope",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 665,
                        "src": "1515:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1488:33:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1524:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1488:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 680,
                  "nodeType": "ExpressionStatement",
                  "src": "1488:40:3"
                }
              ]
            },
            "functionSelector": "36f227d5",
            "id": 682,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 668,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 667,
                  "name": "onlyVnf",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 587,
                  "src": "1452:7:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "1452:7:3"
              },
              {
                "arguments": [
                  {
                    "id": 670,
                    "name": "addr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 663,
                    "src": "1472:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 671,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 669,
                  "name": "non0Address",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 575,
                  "src": "1460:11:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "1460:17:3"
              }
            ],
            "name": "addAddressScope",
            "nameLocation": "1394:15:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 663,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "1418:4:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 682,
                  "src": "1410:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 662,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 665,
                  "mutability": "mutable",
                  "name": "scope",
                  "nameLocation": "1438:5:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 682,
                  "src": "1424:19:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 664,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1424:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1409:35:3"
            },
            "returnParameters": {
              "id": 672,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1478:0:3"
            },
            "scope": 1391,
            "src": "1385:150:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 699,
              "nodeType": "Block",
              "src": "1619:58:3",
              "statements": [
                {
                  "expression": {
                    "id": 697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 691,
                          "name": "addressToPermissions",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 544,
                          "src": "1629:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(string memory => bool))"
                          }
                        },
                        "id": 694,
                        "indexExpression": {
                          "id": 692,
                          "name": "addr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 684,
                          "src": "1650:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1629:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bool_$",
                          "typeString": "mapping(string memory => bool)"
                        }
                      },
                      "id": 695,
                      "indexExpression": {
                        "id": 693,
                        "name": "scope",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 686,
                        "src": "1656:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1629:33:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1665:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1629:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 698,
                  "nodeType": "ExpressionStatement",
                  "src": "1629:41:3"
                }
              ]
            },
            "functionSelector": "51547891",
            "id": 700,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 689,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 688,
                  "name": "onlyVnf",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 587,
                  "src": "1611:7:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "1611:7:3"
              }
            ],
            "name": "removeAddressScope",
            "nameLocation": "1550:18:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 684,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "1577:4:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 700,
                  "src": "1569:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 683,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1569:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 686,
                  "mutability": "mutable",
                  "name": "scope",
                  "nameLocation": "1597:5:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 700,
                  "src": "1583:19:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 685,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1568:35:3"
            },
            "returnParameters": {
              "id": 690,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1619:0:3"
            },
            "scope": 1391,
            "src": "1541:136:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 767,
              "nodeType": "Block",
              "src": "1802:386:3",
              "statements": [
                {
                  "body": {
                    "id": 738,
                    "nodeType": "Block",
                    "src": "1861:125:3",
                    "statements": [
                      {
                        "assignments": [
                          725
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 725,
                            "mutability": "mutable",
                            "name": "scopeToAdd",
                            "nameLocation": "1889:10:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 738,
                            "src": "1875:24:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 724,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1875:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 729,
                        "initialValue": {
                          "baseExpression": {
                            "id": 726,
                            "name": "scopesToAdd",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 705,
                            "src": "1902:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                              "typeString": "string memory[] memory"
                            }
                          },
                          "id": 728,
                          "indexExpression": {
                            "id": 727,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 714,
                            "src": "1914:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1902:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1875:41:3"
                      },
                      {
                        "expression": {
                          "id": 736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 730,
                                "name": "addressToPermissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 544,
                                "src": "1930:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(string memory => bool))"
                                }
                              },
                              "id": 733,
                              "indexExpression": {
                                "id": 731,
                                "name": "addr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 702,
                                "src": "1951:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1930:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bool_$",
                                "typeString": "mapping(string memory => bool)"
                              }
                            },
                            "id": 734,
                            "indexExpression": {
                              "id": 732,
                              "name": "scopeToAdd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 725,
                              "src": "1957:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1930:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1971:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1930:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 737,
                        "nodeType": "ExpressionStatement",
                        "src": "1930:45:3"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 717,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 714,
                      "src": "1832:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 718,
                        "name": "scopesToAdd",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 705,
                        "src": "1836:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      },
                      "id": 719,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1836:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1832:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 739,
                  "initializationExpression": {
                    "assignments": [
                      714
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 714,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "1825:1:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 739,
                        "src": "1817:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 713,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1817:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 716,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1829:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1817:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 722,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1856:3:3",
                      "subExpression": {
                        "id": 721,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 714,
                        "src": "1856:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 723,
                    "nodeType": "ExpressionStatement",
                    "src": "1856:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "1812:174:3"
                },
                {
                  "body": {
                    "id": 765,
                    "nodeType": "Block",
                    "src": "2047:135:3",
                    "statements": [
                      {
                        "assignments": [
                          752
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 752,
                            "mutability": "mutable",
                            "name": "scopeToRemove",
                            "nameLocation": "2075:13:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 765,
                            "src": "2061:27:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 751,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2061:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 756,
                        "initialValue": {
                          "baseExpression": {
                            "id": 753,
                            "name": "scopesToRemove",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 708,
                            "src": "2091:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                              "typeString": "string memory[] memory"
                            }
                          },
                          "id": 755,
                          "indexExpression": {
                            "id": 754,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 741,
                            "src": "2106:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2091:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2061:47:3"
                      },
                      {
                        "expression": {
                          "id": 763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 757,
                                "name": "addressToPermissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 544,
                                "src": "2122:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(string memory => bool))"
                                }
                              },
                              "id": 760,
                              "indexExpression": {
                                "id": 758,
                                "name": "addr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 702,
                                "src": "2143:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2122:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bool_$",
                                "typeString": "mapping(string memory => bool)"
                              }
                            },
                            "id": 761,
                            "indexExpression": {
                              "id": 759,
                              "name": "scopeToRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 752,
                              "src": "2149:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2122:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2166:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2122:49:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 764,
                        "nodeType": "ExpressionStatement",
                        "src": "2122:49:3"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 744,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 741,
                      "src": "2015:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 745,
                        "name": "scopesToRemove",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 708,
                        "src": "2019:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      },
                      "id": 746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2019:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2015:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 766,
                  "initializationExpression": {
                    "assignments": [
                      741
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 741,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "2008:1:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 766,
                        "src": "2000:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 740,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2000:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 743,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 742,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2012:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2000:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2042:3:3",
                      "subExpression": {
                        "id": 748,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 741,
                        "src": "2042:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 750,
                    "nodeType": "ExpressionStatement",
                    "src": "2042:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "1995:187:3"
                }
              ]
            },
            "functionSelector": "a547eca6",
            "id": 768,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 711,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 710,
                  "name": "onlyVnf",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 587,
                  "src": "1794:7:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "1794:7:3"
              }
            ],
            "name": "updateAddressScopes",
            "nameLocation": "1692:19:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 702,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "1720:4:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 768,
                  "src": "1712:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 701,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1712:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 705,
                  "mutability": "mutable",
                  "name": "scopesToAdd",
                  "nameLocation": "1742:11:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 768,
                  "src": "1726:27:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 703,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1726:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 704,
                    "nodeType": "ArrayTypeName",
                    "src": "1726:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 708,
                  "mutability": "mutable",
                  "name": "scopesToRemove",
                  "nameLocation": "1771:14:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 768,
                  "src": "1755:30:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 706,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1755:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 707,
                    "nodeType": "ArrayTypeName",
                    "src": "1755:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1711:75:3"
            },
            "returnParameters": {
              "id": 712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1802:0:3"
            },
            "scope": 1391,
            "src": "1683:505:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 783,
              "nodeType": "Block",
              "src": "2283:57:3",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 777,
                        "name": "addressToPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 544,
                        "src": "2300:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$",
                          "typeString": "mapping(address => mapping(string memory => bool))"
                        }
                      },
                      "id": 779,
                      "indexExpression": {
                        "id": 778,
                        "name": "addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 770,
                        "src": "2321:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2300:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bool_$",
                        "typeString": "mapping(string memory => bool)"
                      }
                    },
                    "id": 781,
                    "indexExpression": {
                      "id": 780,
                      "name": "scope",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 772,
                      "src": "2327:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2300:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 776,
                  "id": 782,
                  "nodeType": "Return",
                  "src": "2293:40:3"
                }
              ]
            },
            "functionSelector": "a38a0cf4",
            "id": 784,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkAddressScope",
            "nameLocation": "2203:17:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 773,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 770,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "2229:4:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 784,
                  "src": "2221:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 769,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2221:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 772,
                  "mutability": "mutable",
                  "name": "scope",
                  "nameLocation": "2249:5:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 784,
                  "src": "2235:19:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 771,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2235:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2220:35:3"
            },
            "returnParameters": {
              "id": 776,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 775,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 784,
                  "src": "2277:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 774,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2277:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2276:6:3"
            },
            "scope": 1391,
            "src": "2194:146:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 816,
              "nodeType": "Block",
              "src": "2460:144:3",
              "statements": [
                {
                  "expression": {
                    "id": 802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 798,
                        "name": "primaryToPermissioning",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 548,
                        "src": "2470:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 800,
                      "indexExpression": {
                        "id": 799,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 786,
                        "src": "2493:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2470:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 801,
                      "name": "permissioning",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 788,
                      "src": "2504:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2470:47:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 803,
                  "nodeType": "ExpressionStatement",
                  "src": "2470:47:3"
                },
                {
                  "expression": {
                    "id": 808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 804,
                        "name": "primaryToRotation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 552,
                        "src": "2527:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 806,
                      "indexExpression": {
                        "id": 805,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 786,
                        "src": "2545:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2527:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 807,
                      "name": "rotation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 790,
                      "src": "2556:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2527:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 809,
                  "nodeType": "ExpressionStatement",
                  "src": "2527:37:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 813,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 786,
                        "src": "2589:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 810,
                        "name": "primaries",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 559,
                        "src": "2574:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "2574:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                        "typeString": "function (address[] storage pointer,address)"
                      }
                    },
                    "id": 814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2574:23:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 815,
                  "nodeType": "ExpressionStatement",
                  "src": "2574:23:3"
                }
              ]
            },
            "functionSelector": "3fb384d7",
            "id": 817,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 793,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 792,
                  "name": "onlyVnf",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 587,
                  "src": "2431:7:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "2431:7:3"
              },
              {
                "arguments": [
                  {
                    "id": 795,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 786,
                    "src": "2451:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 796,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 794,
                  "name": "non0Address",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 575,
                  "src": "2439:11:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "2439:20:3"
              }
            ],
            "name": "addPrimary",
            "nameLocation": "2355:10:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 786,
                  "mutability": "mutable",
                  "name": "primary",
                  "nameLocation": "2374:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 817,
                  "src": "2366:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2366:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 788,
                  "mutability": "mutable",
                  "name": "permissioning",
                  "nameLocation": "2391:13:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 817,
                  "src": "2383:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 787,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2383:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 790,
                  "mutability": "mutable",
                  "name": "rotation",
                  "nameLocation": "2414:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 817,
                  "src": "2406:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2406:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2365:58:3"
            },
            "returnParameters": {
              "id": 797,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2460:0:3"
            },
            "scope": 1391,
            "src": "2346:258:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 841,
              "nodeType": "Block",
              "src": "2732:117:3",
              "statements": [
                {
                  "expression": {
                    "id": 833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 829,
                        "name": "primaryToPermissioning",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 548,
                        "src": "2742:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 831,
                      "indexExpression": {
                        "id": 830,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 819,
                        "src": "2765:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2742:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 832,
                      "name": "newPermissioning",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 821,
                      "src": "2776:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2742:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 834,
                  "nodeType": "ExpressionStatement",
                  "src": "2742:50:3"
                },
                {
                  "expression": {
                    "id": 839,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 835,
                        "name": "primaryToRotation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 552,
                        "src": "2802:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 837,
                      "indexExpression": {
                        "id": 836,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 819,
                        "src": "2820:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2802:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 838,
                      "name": "newRotation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 823,
                      "src": "2831:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2802:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 840,
                  "nodeType": "ExpressionStatement",
                  "src": "2802:40:3"
                }
              ]
            },
            "functionSelector": "7146b2ce",
            "id": 842,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 826,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 819,
                    "src": "2723:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 827,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 825,
                  "name": "onlyRotation",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 603,
                  "src": "2710:12:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "2710:21:3"
              }
            ],
            "name": "rotatePermissioning",
            "nameLocation": "2619:19:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 824,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 819,
                  "mutability": "mutable",
                  "name": "primary",
                  "nameLocation": "2647:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 842,
                  "src": "2639:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2639:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 821,
                  "mutability": "mutable",
                  "name": "newPermissioning",
                  "nameLocation": "2664:16:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 842,
                  "src": "2656:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 820,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2656:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 823,
                  "mutability": "mutable",
                  "name": "newRotation",
                  "nameLocation": "2690:11:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 842,
                  "src": "2682:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 822,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2682:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2638:64:3"
            },
            "returnParameters": {
              "id": 828,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2732:0:3"
            },
            "scope": 1391,
            "src": "2610:239:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 850,
              "nodeType": "Block",
              "src": "2918:33:3",
              "statements": [
                {
                  "expression": {
                    "id": 848,
                    "name": "primaries",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 559,
                    "src": "2935:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 847,
                  "id": 849,
                  "nodeType": "Return",
                  "src": "2928:16:3"
                }
              ]
            },
            "functionSelector": "09891c84",
            "id": 851,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPrimaries",
            "nameLocation": "2864:12:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 843,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2876:2:3"
            },
            "returnParameters": {
              "id": 847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 846,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 851,
                  "src": "2900:16:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 844,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2900:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 845,
                    "nodeType": "ArrayTypeName",
                    "src": "2900:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2899:18:3"
            },
            "scope": 1391,
            "src": "2855:96:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 882,
              "nodeType": "Block",
              "src": "3070:170:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 865,
                            "name": "operatorToPrimary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 556,
                            "src": "3088:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 867,
                          "indexExpression": {
                            "id": 866,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 855,
                            "src": "3106:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3088:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3127:1:3",
                              "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": 869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3119:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 868,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3119:7:3",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3119:10:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3088:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a206f70657261746f7220697320616c7265616479206d617070656420746f2061207072696d617279",
                        "id": 873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3131:54:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_23147ce352ce6205e2ba10425d01621a6242a83f56c0702ee655e035bc00be94",
                          "typeString": "literal_string \"Permissions: operator is already mapped to a primary\""
                        },
                        "value": "Permissions: operator is already mapped to a primary"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_23147ce352ce6205e2ba10425d01621a6242a83f56c0702ee655e035bc00be94",
                          "typeString": "literal_string \"Permissions: operator is already mapped to a primary\""
                        }
                      ],
                      "id": 864,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3080:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3080:106:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 875,
                  "nodeType": "ExpressionStatement",
                  "src": "3080:106:3"
                },
                {
                  "expression": {
                    "id": 880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 876,
                        "name": "operatorToPrimary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 556,
                        "src": "3196:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 878,
                      "indexExpression": {
                        "id": 877,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 855,
                        "src": "3214:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3196:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 879,
                      "name": "primary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 853,
                      "src": "3226:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3196:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 881,
                  "nodeType": "ExpressionStatement",
                  "src": "3196:37:3"
                }
              ]
            },
            "functionSelector": "56796182",
            "id": 883,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 858,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 853,
                    "src": "3039:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 859,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 857,
                  "name": "onlyPermissions",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 619,
                  "src": "3023:15:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "3023:24:3"
              },
              {
                "arguments": [
                  {
                    "id": 861,
                    "name": "operator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 855,
                    "src": "3060:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 862,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 860,
                  "name": "non0Address",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 575,
                  "src": "3048:11:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "3048:21:3"
              }
            ],
            "name": "addOperatorKey",
            "nameLocation": "2966:14:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 853,
                  "mutability": "mutable",
                  "name": "primary",
                  "nameLocation": "2989:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 883,
                  "src": "2981:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2981:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 855,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "3006:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 883,
                  "src": "2998:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 854,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2998:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2980:35:3"
            },
            "returnParameters": {
              "id": 863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3070:0:3"
            },
            "scope": 1391,
            "src": "2957:283:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 902,
              "nodeType": "Block",
              "src": "3340:57:3",
              "statements": [
                {
                  "expression": {
                    "id": 900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 893,
                        "name": "operatorToPrimary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 556,
                        "src": "3350:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 895,
                      "indexExpression": {
                        "id": 894,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 887,
                        "src": "3368:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3350:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3388:1:3",
                          "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": 897,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3380:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 896,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3380:7:3",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 899,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3380:10:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3350:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 901,
                  "nodeType": "ExpressionStatement",
                  "src": "3350:40:3"
                }
              ]
            },
            "functionSelector": "e8439bf2",
            "id": 903,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 890,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 885,
                    "src": "3331:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 891,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 889,
                  "name": "onlyPermissions",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 619,
                  "src": "3315:15:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "3315:24:3"
              }
            ],
            "name": "removeOperatorKey",
            "nameLocation": "3255:17:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 888,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 885,
                  "mutability": "mutable",
                  "name": "primary",
                  "nameLocation": "3281:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 903,
                  "src": "3273:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 884,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3273:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 887,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "3298:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 903,
                  "src": "3290:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 886,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3290:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3272:35:3"
            },
            "returnParameters": {
              "id": 892,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3340:0:3"
            },
            "scope": 1391,
            "src": "3246:151:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 925,
              "nodeType": "Block",
              "src": "3521:102:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 916,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 905,
                        "src": "3549:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 917,
                        "name": "oldOperator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 909,
                        "src": "3558:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 915,
                      "name": "removeOperatorKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 903,
                      "src": "3531:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3531:39:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 919,
                  "nodeType": "ExpressionStatement",
                  "src": "3531:39:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 921,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 905,
                        "src": "3595:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 922,
                        "name": "newOperator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 907,
                        "src": "3604:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 920,
                      "name": "addOperatorKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 883,
                      "src": "3580:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3580:36:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 924,
                  "nodeType": "ExpressionStatement",
                  "src": "3580:36:3"
                }
              ]
            },
            "functionSelector": "8c8a986d",
            "id": 926,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 912,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 905,
                    "src": "3512:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 913,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 911,
                  "name": "onlyPermissions",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 619,
                  "src": "3496:15:3"
                },
                "nodeType": "ModifierInvocation",
                "src": "3496:24:3"
              }
            ],
            "name": "rotateOperatorKey",
            "nameLocation": "3412:17:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 905,
                  "mutability": "mutable",
                  "name": "primary",
                  "nameLocation": "3438:7:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 926,
                  "src": "3430:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3430:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 907,
                  "mutability": "mutable",
                  "name": "newOperator",
                  "nameLocation": "3455:11:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 926,
                  "src": "3447:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3447:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 909,
                  "mutability": "mutable",
                  "name": "oldOperator",
                  "nameLocation": "3476:11:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 926,
                  "src": "3468:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 908,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3468:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3429:59:3"
            },
            "returnParameters": {
              "id": 914,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3521:0:3"
            },
            "scope": 1391,
            "src": "3403:220:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 937,
              "nodeType": "Block",
              "src": "3700:51:3",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 933,
                      "name": "operatorToPrimary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 556,
                      "src": "3717:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 935,
                    "indexExpression": {
                      "id": 934,
                      "name": "operator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 928,
                      "src": "3735:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3717:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 932,
                  "id": 936,
                  "nodeType": "Return",
                  "src": "3710:34:3"
                }
              ]
            },
            "functionSelector": "c187ce09",
            "id": 938,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "lookupPrimary",
            "nameLocation": "3638:13:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 928,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "3660:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 938,
                  "src": "3652:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 927,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3652:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3651:18:3"
            },
            "returnParameters": {
              "id": 932,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 931,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 938,
                  "src": "3691:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 930,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3691:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3690:9:3"
            },
            "scope": 1391,
            "src": "3629:122:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 971,
              "nodeType": "Block",
              "src": "3828:311:3",
              "statements": [
                {
                  "assignments": [
                    946
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 946,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "3846:7:3",
                      "nodeType": "VariableDeclaration",
                      "scope": 971,
                      "src": "3838:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 945,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3838:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 950,
                  "initialValue": {
                    "baseExpression": {
                      "id": 947,
                      "name": "operatorToPrimary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 556,
                      "src": "3856:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 949,
                    "indexExpression": {
                      "id": 948,
                      "name": "operator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 940,
                      "src": "3874:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3856:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3838:45:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 952,
                          "name": "primary",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 946,
                          "src": "3901:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3920:1:3",
                              "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": 954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3912:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 953,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3912:7:3",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3912:10:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3901:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a206f70657261746f72206e6f7420706f696e74696e6720746f2061207072696d617279",
                        "id": 958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3924:49:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de3b1bdc5af527bde259e390bb3b47d013328f7f2eeb4dffcdf27373d0a27b76",
                          "typeString": "literal_string \"Permissions: operator not pointing to a primary\""
                        },
                        "value": "Permissions: operator not pointing to a primary"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de3b1bdc5af527bde259e390bb3b47d013328f7f2eeb4dffcdf27373d0a27b76",
                          "typeString": "literal_string \"Permissions: operator not pointing to a primary\""
                        }
                      ],
                      "id": 951,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3893:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3893:81:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 960,
                  "nodeType": "ExpressionStatement",
                  "src": "3893:81:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 963,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 946,
                            "src": "4010:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "hexValue": "7472616e73616374696f6e733a7772697465",
                            "id": 964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4019:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7de663f9eb8874463b5da3a15a7f6d161e7980db09a8febbbc3400520e50f29e",
                              "typeString": "literal_string \"transactions:write\""
                            },
                            "value": "transactions:write"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7de663f9eb8874463b5da3a15a7f6d161e7980db09a8febbbc3400520e50f29e",
                              "typeString": "literal_string \"transactions:write\""
                            }
                          ],
                          "id": 962,
                          "name": "checkAddressScope",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 784,
                          "src": "3992:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,string memory) view returns (bool)"
                          }
                        },
                        "id": 965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3992:48:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b73207472616e73616374696f6e733a77726974652073636f7065",
                        "id": 966,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4042:65:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_05144b1d419f5a88f682e1a2515100c19affc8db0b84deb3feed8c4b9207e2c4",
                          "typeString": "literal_string \"Permissions: primary of operator lacks transactions:write scope\""
                        },
                        "value": "Permissions: primary of operator lacks transactions:write scope"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_05144b1d419f5a88f682e1a2515100c19affc8db0b84deb3feed8c4b9207e2c4",
                          "typeString": "literal_string \"Permissions: primary of operator lacks transactions:write scope\""
                        }
                      ],
                      "id": 961,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3984:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3984:124:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 968,
                  "nodeType": "ExpressionStatement",
                  "src": "3984:124:3"
                },
                {
                  "expression": {
                    "id": 969,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 946,
                    "src": "4125:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 944,
                  "id": 970,
                  "nodeType": "Return",
                  "src": "4118:14:3"
                }
              ]
            },
            "functionSelector": "de1ac2fd",
            "id": 972,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkOperator",
            "nameLocation": "3766:13:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 940,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "3788:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 972,
                  "src": "3780:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 939,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3780:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3779:18:3"
            },
            "returnParameters": {
              "id": 944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 943,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 972,
                  "src": "3819:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 942,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3819:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3818:9:3"
            },
            "scope": 1391,
            "src": "3757:382:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 997,
              "nodeType": "Block",
              "src": "4246:182:3",
              "statements": [
                {
                  "assignments": [
                    982
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 982,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "4264:7:3",
                      "nodeType": "VariableDeclaration",
                      "scope": 997,
                      "src": "4256:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 981,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4256:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 986,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 984,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 974,
                        "src": "4288:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 983,
                      "name": "checkOperator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 972,
                      "src": "4274:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view returns (address)"
                      }
                    },
                    "id": 985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4274:23:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4256:41:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 989,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "4333:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 990,
                            "name": "scope",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 976,
                            "src": "4342:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 988,
                          "name": "checkAddressScope",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 784,
                          "src": "4315:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,string memory) view returns (bool)"
                          }
                        },
                        "id": 991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4315:33:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732073636f7065",
                        "id": 992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4350:46:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_99b423b3f35acf77976de689c7279b40381dea2c9525e1a0e484817a4b98ff69",
                          "typeString": "literal_string \"Permissions: primary of operator lacks scope\""
                        },
                        "value": "Permissions: primary of operator lacks scope"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_99b423b3f35acf77976de689c7279b40381dea2c9525e1a0e484817a4b98ff69",
                          "typeString": "literal_string \"Permissions: primary of operator lacks scope\""
                        }
                      ],
                      "id": 987,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4307:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4307:90:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 994,
                  "nodeType": "ExpressionStatement",
                  "src": "4307:90:3"
                },
                {
                  "expression": {
                    "id": 995,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 982,
                    "src": "4414:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 980,
                  "id": 996,
                  "nodeType": "Return",
                  "src": "4407:14:3"
                }
              ]
            },
            "functionSelector": "f9f10874",
            "id": 998,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkOperatorWithScope",
            "nameLocation": "4154:22:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 974,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4185:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 998,
                  "src": "4177:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 973,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4177:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 976,
                  "mutability": "mutable",
                  "name": "scope",
                  "nameLocation": "4209:5:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 998,
                  "src": "4195:19:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 975,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4195:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4176:39:3"
            },
            "returnParameters": {
              "id": 980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 979,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 998,
                  "src": "4237:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 978,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4237:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4236:9:3"
            },
            "scope": 1391,
            "src": "4145:283:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1327,
              "nodeType": "Block",
              "src": "4537:4682:3",
              "statements": [
                {
                  "assignments": [
                    1006
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1006,
                      "mutability": "mutable",
                      "name": "permissionCredentialIssue",
                      "nameLocation": "4561:25:3",
                      "nodeType": "VariableDeclaration",
                      "scope": 1327,
                      "src": "4547:39:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1005,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4547:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1008,
                  "initialValue": {
                    "hexValue": "63726564656e7469616c3a6973737565",
                    "id": 1007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4589:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_92501a8193698a203fd4c821c07967fcb6ac282aecf7d27b6d77f5523ea52b11",
                      "typeString": "literal_string \"credential:issue\""
                    },
                    "value": "credential:issue"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4547:60:3"
                },
                {
                  "assignments": [
                    1010
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1010,
                      "mutability": "mutable",
                      "name": "permissionCredentialIdentityIssue",
                      "nameLocation": "4631:33:3",
                      "nodeType": "VariableDeclaration",
                      "scope": 1327,
                      "src": "4617:47:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1009,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4617:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1012,
                  "initialValue": {
                    "hexValue": "63726564656e7469616c3a6964656e746974796973737565",
                    "id": 1011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4667:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_bd5b718d109609cd0e1bc5a1ebd9b8e3f745523317c19c3d615d0ac4faf79929",
                      "typeString": "literal_string \"credential:identityissue\""
                    },
                    "value": "credential:identityissue"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4617:76:3"
                },
                {
                  "assignments": [
                    1014
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1014,
                      "mutability": "mutable",
                      "name": "permissionCredentialContactIssue",
                      "nameLocation": "4717:32:3",
                      "nodeType": "VariableDeclaration",
                      "scope": 1327,
                      "src": "4703:46:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1013,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4703:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1016,
                  "initialValue": {
                    "hexValue": "63726564656e7469616c3a636f6e746163746973737565",
                    "id": 1015,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4752:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2cda59a8aca75a60b5d3541eef838fc5b2071cb6020442cfef1f46586531dcac",
                      "typeString": "literal_string \"credential:contactissue\""
                    },
                    "value": "credential:contactissue"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4703:74:3"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    },
                    "id": 1019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1017,
                      "name": "credentialType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1000,
                      "src": "4791:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "307837383038",
                      "id": 1018,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4809:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_30728_by_1",
                        "typeString": "int_const 30728"
                      },
                      "value": "0x7808"
                    },
                    "src": "4791:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      },
                      "id": 1025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 1023,
                        "name": "credentialType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1000,
                        "src": "4883:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "307834316563",
                        "id": 1024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4901:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16876_by_1",
                          "typeString": "int_const 16876"
                        },
                        "value": "0x41ec"
                      },
                      "src": "4883:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        "id": 1031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1029,
                          "name": "credentialType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1000,
                          "src": "4979:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "307861663239",
                          "id": 1030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4997:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_44841_by_1",
                            "typeString": "int_const 44841"
                          },
                          "value": "0xaf29"
                        },
                        "src": "4979:24:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          },
                          "id": 1037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1035,
                            "name": "credentialType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1000,
                            "src": "5075:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "307830303234",
                            "id": 1036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5093:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_36_by_1",
                              "typeString": "int_const 36"
                            },
                            "value": "0x0024"
                          },
                          "src": "5075:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            },
                            "id": 1043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1041,
                              "name": "credentialType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1000,
                              "src": "5162:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "307863313834",
                              "id": 1042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5180:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_49540_by_1",
                                "typeString": "int_const 49540"
                              },
                              "value": "0xc184"
                            },
                            "src": "5162:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              },
                              "id": 1049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1047,
                                "name": "credentialType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1000,
                                "src": "5253:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes2",
                                  "typeString": "bytes2"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "307838363834",
                                "id": 1048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5271:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_34436_by_1",
                                  "typeString": "int_const 34436"
                                },
                                "value": "0x8684"
                              },
                              "src": "5253:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes2",
                                  "typeString": "bytes2"
                                },
                                "id": 1055,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1053,
                                  "name": "credentialType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1000,
                                  "src": "5348:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes2",
                                    "typeString": "bytes2"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "307835646630",
                                  "id": 1054,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5366:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_24048_by_1",
                                    "typeString": "int_const 24048"
                                  },
                                  "value": "0x5df0"
                                },
                                "src": "5348:24:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes2",
                                    "typeString": "bytes2"
                                  },
                                  "id": 1061,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1059,
                                    "name": "credentialType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1000,
                                    "src": "5447:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes2",
                                      "typeString": "bytes2"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "307861646539",
                                    "id": 1060,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5465:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_44521_by_1",
                                      "typeString": "int_const 44521"
                                    },
                                    "value": "0xade9"
                                  },
                                  "src": "5447:24:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes2",
                                      "typeString": "bytes2"
                                    },
                                    "id": 1067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1065,
                                      "name": "credentialType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1000,
                                      "src": "5546:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes2",
                                        "typeString": "bytes2"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "307832303936",
                                      "id": 1066,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5564:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8342_by_1",
                                        "typeString": "int_const 8342"
                                      },
                                      "value": "0x2096"
                                    },
                                    "src": "5546:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes2",
                                        "typeString": "bytes2"
                                      },
                                      "id": 1073,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 1071,
                                        "name": "credentialType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1000,
                                        "src": "5634:14:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes2",
                                          "typeString": "bytes2"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "307862303337",
                                        "id": 1072,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5652:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_45111_by_1",
                                          "typeString": "int_const 45111"
                                        },
                                        "value": "0xb037"
                                      },
                                      "src": "5634:24:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes2",
                                          "typeString": "bytes2"
                                        },
                                        "id": 1079,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1077,
                                          "name": "credentialType",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1000,
                                          "src": "5736:14:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes2",
                                            "typeString": "bytes2"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "307863333835",
                                          "id": 1078,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5754:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_50053_by_1",
                                            "typeString": "int_const 50053"
                                          },
                                          "value": "0xc385"
                                        },
                                        "src": "5736:24:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes2",
                                            "typeString": "bytes2"
                                          },
                                          "id": 1085,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 1083,
                                            "name": "credentialType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1000,
                                            "src": "5838:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes2",
                                              "typeString": "bytes2"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "307835663065",
                                            "id": 1084,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5856:6:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_24334_by_1",
                                              "typeString": "int_const 24334"
                                            },
                                            "value": "0x5f0e"
                                          },
                                          "src": "5838:24:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_bytes2",
                                              "typeString": "bytes2"
                                            },
                                            "id": 1091,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 1089,
                                              "name": "credentialType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1000,
                                              "src": "5940:14:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes2",
                                                "typeString": "bytes2"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "307834623830",
                                              "id": 1090,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5958:6:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_19328_by_1",
                                                "typeString": "int_const 19328"
                                              },
                                              "value": "0x4b80"
                                            },
                                            "src": "5940:24:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes2",
                                                "typeString": "bytes2"
                                              },
                                              "id": 1097,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 1095,
                                                "name": "credentialType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1000,
                                                "src": "6042:14:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes2",
                                                  "typeString": "bytes2"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "hexValue": "307866326463",
                                                "id": 1096,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6060:6:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_62172_by_1",
                                                  "typeString": "int_const 62172"
                                                },
                                                "value": "0xf2dc"
                                              },
                                              "src": "6042:24:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "condition": {
                                                "commonType": {
                                                  "typeIdentifier": "t_bytes2",
                                                  "typeString": "bytes2"
                                                },
                                                "id": 1103,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 1101,
                                                  "name": "credentialType",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1000,
                                                  "src": "6146:14:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes2",
                                                    "typeString": "bytes2"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                  "hexValue": "307839353562",
                                                  "id": 1102,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "6164:6:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_38235_by_1",
                                                    "typeString": "int_const 38235"
                                                  },
                                                  "value": "0x955b"
                                                },
                                                "src": "6146:24:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseBody": {
                                                "condition": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bytes2",
                                                    "typeString": "bytes2"
                                                  },
                                                  "id": 1109,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 1107,
                                                    "name": "credentialType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1000,
                                                    "src": "6250:14:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes2",
                                                      "typeString": "bytes2"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "==",
                                                  "rightExpression": {
                                                    "hexValue": "307837353136",
                                                    "id": 1108,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6268:6:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_29974_by_1",
                                                      "typeString": "int_const 29974"
                                                    },
                                                    "value": "0x7516"
                                                  },
                                                  "src": "6250:24:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "falseBody": {
                                                  "condition": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_bytes2",
                                                      "typeString": "bytes2"
                                                    },
                                                    "id": 1115,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 1113,
                                                      "name": "credentialType",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1000,
                                                      "src": "6357:14:3",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes2",
                                                        "typeString": "bytes2"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                      "hexValue": "307865656132",
                                                      "id": 1114,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "6375:6:3",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_61090_by_1",
                                                        "typeString": "int_const 61090"
                                                      },
                                                      "value": "0xeea2"
                                                    },
                                                    "src": "6357:24:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "falseBody": {
                                                    "condition": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_bytes2",
                                                        "typeString": "bytes2"
                                                      },
                                                      "id": 1121,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 1119,
                                                        "name": "credentialType",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1000,
                                                        "src": "6465:14:3",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes2",
                                                          "typeString": "bytes2"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "==",
                                                      "rightExpression": {
                                                        "hexValue": "307862383966",
                                                        "id": 1120,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6483:6:3",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_47263_by_1",
                                                          "typeString": "int_const 47263"
                                                        },
                                                        "value": "0xb89f"
                                                      },
                                                      "src": "6465:24:3",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "falseBody": {
                                                      "condition": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_bytes2",
                                                          "typeString": "bytes2"
                                                        },
                                                        "id": 1127,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 1125,
                                                          "name": "credentialType",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 1000,
                                                          "src": "6562:14:3",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes2",
                                                            "typeString": "bytes2"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                          "hexValue": "307832393461",
                                                          "id": 1126,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "6580:6:3",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_10570_by_1",
                                                            "typeString": "int_const 10570"
                                                          },
                                                          "value": "0x294a"
                                                        },
                                                        "src": "6562:24:3",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "falseBody": {
                                                        "condition": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_bytes2",
                                                            "typeString": "bytes2"
                                                          },
                                                          "id": 1133,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 1131,
                                                            "name": "credentialType",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1000,
                                                            "src": "6673:14:3",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bytes2",
                                                              "typeString": "bytes2"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "==",
                                                          "rightExpression": {
                                                            "hexValue": "307838363432",
                                                            "id": 1132,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6691:6:3",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_34370_by_1",
                                                              "typeString": "int_const 34370"
                                                            },
                                                            "value": "0x8642"
                                                          },
                                                          "src": "6673:24:3",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "falseBody": {
                                                          "condition": {
                                                            "commonType": {
                                                              "typeIdentifier": "t_bytes2",
                                                              "typeString": "bytes2"
                                                            },
                                                            "id": 1139,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "id": 1137,
                                                              "name": "credentialType",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 1000,
                                                              "src": "6784:14:3",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes2",
                                                                "typeString": "bytes2"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                              "hexValue": "307839623966",
                                                              "id": 1138,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "6802:6:3",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_39839_by_1",
                                                                "typeString": "int_const 39839"
                                                              },
                                                              "value": "0x9b9f"
                                                            },
                                                            "src": "6784:24:3",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bool",
                                                              "typeString": "bool"
                                                            }
                                                          },
                                                          "falseBody": {
                                                            "condition": {
                                                              "commonType": {
                                                                "typeIdentifier": "t_bytes2",
                                                                "typeString": "bytes2"
                                                              },
                                                              "id": 1145,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "id": 1143,
                                                                "name": "credentialType",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1000,
                                                                "src": "6897:14:3",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_bytes2",
                                                                  "typeString": "bytes2"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "==",
                                                              "rightExpression": {
                                                                "hexValue": "307835616236",
                                                                "id": 1144,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "6915:6:3",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_rational_23222_by_1",
                                                                  "typeString": "int_const 23222"
                                                                },
                                                                "value": "0x5ab6"
                                                              },
                                                              "src": "6897:24:3",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                              }
                                                            },
                                                            "falseBody": {
                                                              "condition": {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_bytes2",
                                                                  "typeString": "bytes2"
                                                                },
                                                                "id": 1151,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "id": 1149,
                                                                  "name": "credentialType",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 1000,
                                                                  "src": "7010:14:3",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes2",
                                                                    "typeString": "bytes2"
                                                                  }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                  "hexValue": "307862313339",
                                                                  "id": 1150,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "kind": "number",
                                                                  "lValueRequested": false,
                                                                  "nodeType": "Literal",
                                                                  "src": "7028:6:3",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_45369_by_1",
                                                                    "typeString": "int_const 45369"
                                                                  },
                                                                  "value": "0xb139"
                                                                },
                                                                "src": "7010:24:3",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_bool",
                                                                  "typeString": "bool"
                                                                }
                                                              },
                                                              "falseBody": {
                                                                "condition": {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_bytes2",
                                                                    "typeString": "bytes2"
                                                                  },
                                                                  "id": 1157,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "leftExpression": {
                                                                    "id": 1155,
                                                                    "name": "credentialType",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1000,
                                                                    "src": "7116:14:3",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_bytes2",
                                                                      "typeString": "bytes2"
                                                                    }
                                                                  },
                                                                  "nodeType": "BinaryOperation",
                                                                  "operator": "==",
                                                                  "rightExpression": {
                                                                    "hexValue": "307861323134",
                                                                    "id": 1156,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "7134:6:3",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_rational_41492_by_1",
                                                                      "typeString": "int_const 41492"
                                                                    },
                                                                    "value": "0xa214"
                                                                  },
                                                                  "src": "7116:24:3",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                  }
                                                                },
                                                                "falseBody": {
                                                                  "condition": {
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_bytes2",
                                                                      "typeString": "bytes2"
                                                                    },
                                                                    "id": 1163,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "id": 1161,
                                                                      "name": "credentialType",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 1000,
                                                                      "src": "7222:14:3",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes2",
                                                                        "typeString": "bytes2"
                                                                      }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "==",
                                                                    "rightExpression": {
                                                                      "hexValue": "307839363963",
                                                                      "id": 1162,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": true,
                                                                      "kind": "number",
                                                                      "lValueRequested": false,
                                                                      "nodeType": "Literal",
                                                                      "src": "7240:6:3",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_38556_by_1",
                                                                        "typeString": "int_const 38556"
                                                                      },
                                                                      "value": "0x969c"
                                                                    },
                                                                    "src": "7222:24:3",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_bool",
                                                                      "typeString": "bool"
                                                                    }
                                                                  },
                                                                  "falseBody": {
                                                                    "condition": {
                                                                      "commonType": {
                                                                        "typeIdentifier": "t_bytes2",
                                                                        "typeString": "bytes2"
                                                                      },
                                                                      "id": 1169,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "leftExpression": {
                                                                        "id": 1167,
                                                                        "name": "credentialType",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1000,
                                                                        "src": "7316:14:3",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_bytes2",
                                                                          "typeString": "bytes2"
                                                                        }
                                                                      },
                                                                      "nodeType": "BinaryOperation",
                                                                      "operator": "==",
                                                                      "rightExpression": {
                                                                        "hexValue": "307838663037",
                                                                        "id": 1168,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7334:6:3",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_rational_36615_by_1",
                                                                          "typeString": "int_const 36615"
                                                                        },
                                                                        "value": "0x8f07"
                                                                      },
                                                                      "src": "7316:24:3",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                      }
                                                                    },
                                                                    "falseBody": {
                                                                      "condition": {
                                                                        "commonType": {
                                                                          "typeIdentifier": "t_bytes2",
                                                                          "typeString": "bytes2"
                                                                        },
                                                                        "id": 1175,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                          "id": 1173,
                                                                          "name": "credentialType",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 1000,
                                                                          "src": "7414:14:3",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes2",
                                                                            "typeString": "bytes2"
                                                                          }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "==",
                                                                        "rightExpression": {
                                                                          "hexValue": "307837363463",
                                                                          "id": 1174,
                                                                          "isConstant": false,
                                                                          "isLValue": false,
                                                                          "isPure": true,
                                                                          "kind": "number",
                                                                          "lValueRequested": false,
                                                                          "nodeType": "Literal",
                                                                          "src": "7432:6:3",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_30284_by_1",
                                                                            "typeString": "int_const 30284"
                                                                          },
                                                                          "value": "0x764c"
                                                                        },
                                                                        "src": "7414:24:3",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_bool",
                                                                          "typeString": "bool"
                                                                        }
                                                                      },
                                                                      "falseBody": {
                                                                        "condition": {
                                                                          "commonType": {
                                                                            "typeIdentifier": "t_bytes2",
                                                                            "typeString": "bytes2"
                                                                          },
                                                                          "id": 1181,
                                                                          "isConstant": false,
                                                                          "isLValue": false,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "leftExpression": {
                                                                            "id": 1179,
                                                                            "name": "credentialType",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1000,
                                                                            "src": "7517:14:3",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_bytes2",
                                                                              "typeString": "bytes2"
                                                                            }
                                                                          },
                                                                          "nodeType": "BinaryOperation",
                                                                          "operator": "==",
                                                                          "rightExpression": {
                                                                            "hexValue": "307864623463",
                                                                            "id": 1180,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "7535:6:3",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_rational_56140_by_1",
                                                                              "typeString": "int_const 56140"
                                                                            },
                                                                            "value": "0xdb4c"
                                                                          },
                                                                          "src": "7517:24:3",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                          }
                                                                        },
                                                                        "falseBody": {
                                                                          "condition": {
                                                                            "commonType": {
                                                                              "typeIdentifier": "t_bytes2",
                                                                              "typeString": "bytes2"
                                                                            },
                                                                            "id": 1187,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                              "id": 1185,
                                                                              "name": "credentialType",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 1000,
                                                                              "src": "7620:14:3",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes2",
                                                                                "typeString": "bytes2"
                                                                              }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "==",
                                                                            "rightExpression": {
                                                                              "hexValue": "307837653135",
                                                                              "id": 1186,
                                                                              "isConstant": false,
                                                                              "isLValue": false,
                                                                              "isPure": true,
                                                                              "kind": "number",
                                                                              "lValueRequested": false,
                                                                              "nodeType": "Literal",
                                                                              "src": "7638:6:3",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_32277_by_1",
                                                                                "typeString": "int_const 32277"
                                                                              },
                                                                              "value": "0x7e15"
                                                                            },
                                                                            "src": "7620:24:3",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_bool",
                                                                              "typeString": "bool"
                                                                            }
                                                                          },
                                                                          "falseBody": {
                                                                            "condition": {
                                                                              "commonType": {
                                                                                "typeIdentifier": "t_bytes2",
                                                                                "typeString": "bytes2"
                                                                              },
                                                                              "id": 1193,
                                                                              "isConstant": false,
                                                                              "isLValue": false,
                                                                              "isPure": false,
                                                                              "lValueRequested": false,
                                                                              "leftExpression": {
                                                                                "id": 1191,
                                                                                "name": "credentialType",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1000,
                                                                                "src": "7720:14:3",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_bytes2",
                                                                                  "typeString": "bytes2"
                                                                                }
                                                                              },
                                                                              "nodeType": "BinaryOperation",
                                                                              "operator": "==",
                                                                              "rightExpression": {
                                                                                "hexValue": "307866346161",
                                                                                "id": 1192,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "7738:6:3",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_rational_62634_by_1",
                                                                                  "typeString": "int_const 62634"
                                                                                },
                                                                                "value": "0xf4aa"
                                                                              },
                                                                              "src": "7720:24:3",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                              }
                                                                            },
                                                                            "falseBody": {
                                                                              "condition": {
                                                                                "commonType": {
                                                                                  "typeIdentifier": "t_bytes2",
                                                                                  "typeString": "bytes2"
                                                                                },
                                                                                "id": 1199,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                  "id": 1197,
                                                                                  "name": "credentialType",
                                                                                  "nodeType": "Identifier",
                                                                                  "overloadedDeclarations": [],
                                                                                  "referencedDeclaration": 1000,
                                                                                  "src": "7820:14:3",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes2",
                                                                                    "typeString": "bytes2"
                                                                                  }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "==",
                                                                                "rightExpression": {
                                                                                  "hexValue": "307838353166",
                                                                                  "id": 1198,
                                                                                  "isConstant": false,
                                                                                  "isLValue": false,
                                                                                  "isPure": true,
                                                                                  "kind": "number",
                                                                                  "lValueRequested": false,
                                                                                  "nodeType": "Literal",
                                                                                  "src": "7838:6:3",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_34079_by_1",
                                                                                    "typeString": "int_const 34079"
                                                                                  },
                                                                                  "value": "0x851f"
                                                                                },
                                                                                "src": "7820:24:3",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_bool",
                                                                                  "typeString": "bool"
                                                                                }
                                                                              },
                                                                              "falseBody": {
                                                                                "condition": {
                                                                                  "commonType": {
                                                                                    "typeIdentifier": "t_bytes2",
                                                                                    "typeString": "bytes2"
                                                                                  },
                                                                                  "id": 1205,
                                                                                  "isConstant": false,
                                                                                  "isLValue": false,
                                                                                  "isPure": false,
                                                                                  "lValueRequested": false,
                                                                                  "leftExpression": {
                                                                                    "id": 1203,
                                                                                    "name": "credentialType",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1000,
                                                                                    "src": "7920:14:3",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_bytes2",
                                                                                      "typeString": "bytes2"
                                                                                    }
                                                                                  },
                                                                                  "nodeType": "BinaryOperation",
                                                                                  "operator": "==",
                                                                                  "rightExpression": {
                                                                                    "hexValue": "307866656162",
                                                                                    "id": 1204,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "7938:6:3",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_rational_65195_by_1",
                                                                                      "typeString": "int_const 65195"
                                                                                    },
                                                                                    "value": "0xfeab"
                                                                                  },
                                                                                  "src": "7920:24:3",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                  }
                                                                                },
                                                                                "falseBody": {
                                                                                  "condition": {
                                                                                    "commonType": {
                                                                                      "typeIdentifier": "t_bytes2",
                                                                                      "typeString": "bytes2"
                                                                                    },
                                                                                    "id": 1211,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                      "id": 1209,
                                                                                      "name": "credentialType",
                                                                                      "nodeType": "Identifier",
                                                                                      "overloadedDeclarations": [],
                                                                                      "referencedDeclaration": 1000,
                                                                                      "src": "8024:14:3",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes2",
                                                                                        "typeString": "bytes2"
                                                                                      }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "==",
                                                                                    "rightExpression": {
                                                                                      "hexValue": "307865666361",
                                                                                      "id": 1210,
                                                                                      "isConstant": false,
                                                                                      "isLValue": false,
                                                                                      "isPure": true,
                                                                                      "kind": "number",
                                                                                      "lValueRequested": false,
                                                                                      "nodeType": "Literal",
                                                                                      "src": "8042:6:3",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_61386_by_1",
                                                                                        "typeString": "int_const 61386"
                                                                                      },
                                                                                      "value": "0xefca"
                                                                                    },
                                                                                    "src": "8024:24:3",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_bool",
                                                                                      "typeString": "bool"
                                                                                    }
                                                                                  },
                                                                                  "falseBody": {
                                                                                    "condition": {
                                                                                      "commonType": {
                                                                                        "typeIdentifier": "t_bytes2",
                                                                                        "typeString": "bytes2"
                                                                                      },
                                                                                      "id": 1217,
                                                                                      "isConstant": false,
                                                                                      "isLValue": false,
                                                                                      "isPure": false,
                                                                                      "lValueRequested": false,
                                                                                      "leftExpression": {
                                                                                        "id": 1215,
                                                                                        "name": "credentialType",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1000,
                                                                                        "src": "8117:14:3",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_bytes2",
                                                                                          "typeString": "bytes2"
                                                                                        }
                                                                                      },
                                                                                      "nodeType": "BinaryOperation",
                                                                                      "operator": "==",
                                                                                      "rightExpression": {
                                                                                        "hexValue": "307864386165",
                                                                                        "id": 1216,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "number",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "8135:6:3",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_rational_55470_by_1",
                                                                                          "typeString": "int_const 55470"
                                                                                        },
                                                                                        "value": "0xd8ae"
                                                                                      },
                                                                                      "src": "8117:24:3",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bool",
                                                                                        "typeString": "bool"
                                                                                      }
                                                                                    },
                                                                                    "falseBody": {
                                                                                      "condition": {
                                                                                        "commonType": {
                                                                                          "typeIdentifier": "t_bytes2",
                                                                                          "typeString": "bytes2"
                                                                                        },
                                                                                        "id": 1223,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                          "id": 1221,
                                                                                          "name": "credentialType",
                                                                                          "nodeType": "Identifier",
                                                                                          "overloadedDeclarations": [],
                                                                                          "referencedDeclaration": 1000,
                                                                                          "src": "8210:14:3",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes2",
                                                                                            "typeString": "bytes2"
                                                                                          }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "==",
                                                                                        "rightExpression": {
                                                                                          "hexValue": "307864656566",
                                                                                          "id": 1222,
                                                                                          "isConstant": false,
                                                                                          "isLValue": false,
                                                                                          "isPure": true,
                                                                                          "kind": "number",
                                                                                          "lValueRequested": false,
                                                                                          "nodeType": "Literal",
                                                                                          "src": "8228:6:3",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_rational_57071_by_1",
                                                                                            "typeString": "int_const 57071"
                                                                                          },
                                                                                          "value": "0xdeef"
                                                                                        },
                                                                                        "src": "8210:24:3",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_bool",
                                                                                          "typeString": "bool"
                                                                                        }
                                                                                      },
                                                                                      "falseBody": {
                                                                                        "condition": {
                                                                                          "commonType": {
                                                                                            "typeIdentifier": "t_bytes2",
                                                                                            "typeString": "bytes2"
                                                                                          },
                                                                                          "id": 1229,
                                                                                          "isConstant": false,
                                                                                          "isLValue": false,
                                                                                          "isPure": false,
                                                                                          "lValueRequested": false,
                                                                                          "leftExpression": {
                                                                                            "id": 1227,
                                                                                            "name": "credentialType",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1000,
                                                                                            "src": "8318:14:3",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_bytes2",
                                                                                              "typeString": "bytes2"
                                                                                            }
                                                                                          },
                                                                                          "nodeType": "BinaryOperation",
                                                                                          "operator": "==",
                                                                                          "rightExpression": {
                                                                                            "hexValue": "307832393336",
                                                                                            "id": 1228,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "8336:6:3",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_rational_10550_by_1",
                                                                                              "typeString": "int_const 10550"
                                                                                            },
                                                                                            "value": "0x2936"
                                                                                          },
                                                                                          "src": "8318:24:3",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bool",
                                                                                            "typeString": "bool"
                                                                                          }
                                                                                        },
                                                                                        "falseBody": {
                                                                                          "condition": {
                                                                                            "commonType": {
                                                                                              "typeIdentifier": "t_bytes2",
                                                                                              "typeString": "bytes2"
                                                                                            },
                                                                                            "id": 1235,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                              "id": 1233,
                                                                                              "name": "credentialType",
                                                                                              "nodeType": "Identifier",
                                                                                              "overloadedDeclarations": [],
                                                                                              "referencedDeclaration": 1000,
                                                                                              "src": "8419:14:3",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes2",
                                                                                                "typeString": "bytes2"
                                                                                              }
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "==",
                                                                                            "rightExpression": {
                                                                                              "hexValue": "307838366266",
                                                                                              "id": 1234,
                                                                                              "isConstant": false,
                                                                                              "isLValue": false,
                                                                                              "isPure": true,
                                                                                              "kind": "number",
                                                                                              "lValueRequested": false,
                                                                                              "nodeType": "Literal",
                                                                                              "src": "8437:6:3",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_34495_by_1",
                                                                                                "typeString": "int_const 34495"
                                                                                              },
                                                                                              "value": "0x86bf"
                                                                                            },
                                                                                            "src": "8419:24:3",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_bool",
                                                                                              "typeString": "bool"
                                                                                            }
                                                                                          },
                                                                                          "falseBody": {
                                                                                            "condition": {
                                                                                              "commonType": {
                                                                                                "typeIdentifier": "t_bytes2",
                                                                                                "typeString": "bytes2"
                                                                                              },
                                                                                              "id": 1241,
                                                                                              "isConstant": false,
                                                                                              "isLValue": false,
                                                                                              "isPure": false,
                                                                                              "lValueRequested": false,
                                                                                              "leftExpression": {
                                                                                                "id": 1239,
                                                                                                "name": "credentialType",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1000,
                                                                                                "src": "8514:14:3",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_bytes2",
                                                                                                  "typeString": "bytes2"
                                                                                                }
                                                                                              },
                                                                                              "nodeType": "BinaryOperation",
                                                                                              "operator": "==",
                                                                                              "rightExpression": {
                                                                                                "hexValue": "307835623065",
                                                                                                "id": 1240,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "8532:6:3",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_rational_23310_by_1",
                                                                                                  "typeString": "int_const 23310"
                                                                                                },
                                                                                                "value": "0x5b0e"
                                                                                              },
                                                                                              "src": "8514:24:3",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bool",
                                                                                                "typeString": "bool"
                                                                                              }
                                                                                            },
                                                                                            "falseBody": {
                                                                                              "condition": {
                                                                                                "commonType": {
                                                                                                  "typeIdentifier": "t_bytes2",
                                                                                                  "typeString": "bytes2"
                                                                                                },
                                                                                                "id": 1247,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "leftExpression": {
                                                                                                  "id": 1245,
                                                                                                  "name": "credentialType",
                                                                                                  "nodeType": "Identifier",
                                                                                                  "overloadedDeclarations": [],
                                                                                                  "referencedDeclaration": 1000,
                                                                                                  "src": "8609:14:3",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes2",
                                                                                                    "typeString": "bytes2"
                                                                                                  }
                                                                                                },
                                                                                                "nodeType": "BinaryOperation",
                                                                                                "operator": "==",
                                                                                                "rightExpression": {
                                                                                                  "hexValue": "307837623137",
                                                                                                  "id": 1246,
                                                                                                  "isConstant": false,
                                                                                                  "isLValue": false,
                                                                                                  "isPure": true,
                                                                                                  "kind": "number",
                                                                                                  "lValueRequested": false,
                                                                                                  "nodeType": "Literal",
                                                                                                  "src": "8627:6:3",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_31511_by_1",
                                                                                                    "typeString": "int_const 31511"
                                                                                                  },
                                                                                                  "value": "0x7b17"
                                                                                                },
                                                                                                "src": "8609:24:3",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_bool",
                                                                                                  "typeString": "bool"
                                                                                                }
                                                                                              },
                                                                                              "falseBody": {
                                                                                                "condition": {
                                                                                                  "commonType": {
                                                                                                    "typeIdentifier": "t_bytes2",
                                                                                                    "typeString": "bytes2"
                                                                                                  },
                                                                                                  "id": 1253,
                                                                                                  "isConstant": false,
                                                                                                  "isLValue": false,
                                                                                                  "isPure": false,
                                                                                                  "lValueRequested": false,
                                                                                                  "leftExpression": {
                                                                                                    "id": 1251,
                                                                                                    "name": "credentialType",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 1000,
                                                                                                    "src": "8711:14:3",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_bytes2",
                                                                                                      "typeString": "bytes2"
                                                                                                    }
                                                                                                  },
                                                                                                  "nodeType": "BinaryOperation",
                                                                                                  "operator": "==",
                                                                                                  "rightExpression": {
                                                                                                    "hexValue": "307832396432",
                                                                                                    "id": 1252,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "kind": "number",
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "Literal",
                                                                                                    "src": "8729:6:3",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_rational_10706_by_1",
                                                                                                      "typeString": "int_const 10706"
                                                                                                    },
                                                                                                    "value": "0x29d2"
                                                                                                  },
                                                                                                  "src": "8711:24:3",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bool",
                                                                                                    "typeString": "bool"
                                                                                                  }
                                                                                                },
                                                                                                "falseBody": {
                                                                                                  "condition": {
                                                                                                    "commonType": {
                                                                                                      "typeIdentifier": "t_bytes2",
                                                                                                      "typeString": "bytes2"
                                                                                                    },
                                                                                                    "id": 1259,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "leftExpression": {
                                                                                                      "id": 1257,
                                                                                                      "name": "credentialType",
                                                                                                      "nodeType": "Identifier",
                                                                                                      "overloadedDeclarations": [],
                                                                                                      "referencedDeclaration": 1000,
                                                                                                      "src": "8815:14:3",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes2",
                                                                                                        "typeString": "bytes2"
                                                                                                      }
                                                                                                    },
                                                                                                    "nodeType": "BinaryOperation",
                                                                                                    "operator": "==",
                                                                                                    "rightExpression": {
                                                                                                      "hexValue": "307836336463",
                                                                                                      "id": 1258,
                                                                                                      "isConstant": false,
                                                                                                      "isLValue": false,
                                                                                                      "isPure": true,
                                                                                                      "kind": "number",
                                                                                                      "lValueRequested": false,
                                                                                                      "nodeType": "Literal",
                                                                                                      "src": "8833:6:3",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_rational_25564_by_1",
                                                                                                        "typeString": "int_const 25564"
                                                                                                      },
                                                                                                      "value": "0x63dc"
                                                                                                    },
                                                                                                    "src": "8815:24:3",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_bool",
                                                                                                      "typeString": "bool"
                                                                                                    }
                                                                                                  },
                                                                                                  "falseBody": {
                                                                                                    "condition": {
                                                                                                      "commonType": {
                                                                                                        "typeIdentifier": "t_bytes2",
                                                                                                        "typeString": "bytes2"
                                                                                                      },
                                                                                                      "id": 1265,
                                                                                                      "isConstant": false,
                                                                                                      "isLValue": false,
                                                                                                      "isPure": false,
                                                                                                      "lValueRequested": false,
                                                                                                      "leftExpression": {
                                                                                                        "id": 1263,
                                                                                                        "name": "credentialType",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 1000,
                                                                                                        "src": "8909:14:3",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_bytes2",
                                                                                                          "typeString": "bytes2"
                                                                                                        }
                                                                                                      },
                                                                                                      "nodeType": "BinaryOperation",
                                                                                                      "operator": "==",
                                                                                                      "rightExpression": {
                                                                                                        "hexValue": "307834666662",
                                                                                                        "id": 1264,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": true,
                                                                                                        "kind": "number",
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "Literal",
                                                                                                        "src": "8927:6:3",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_rational_20475_by_1",
                                                                                                          "typeString": "int_const 20475"
                                                                                                        },
                                                                                                        "value": "0x4ffb"
                                                                                                      },
                                                                                                      "src": "8909:24:3",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bool",
                                                                                                        "typeString": "bool"
                                                                                                      }
                                                                                                    },
                                                                                                    "falseBody": {
                                                                                                      "condition": {
                                                                                                        "commonType": {
                                                                                                          "typeIdentifier": "t_bytes2",
                                                                                                          "typeString": "bytes2"
                                                                                                        },
                                                                                                        "id": 1271,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "leftExpression": {
                                                                                                          "id": 1269,
                                                                                                          "name": "credentialType",
                                                                                                          "nodeType": "Identifier",
                                                                                                          "overloadedDeclarations": [],
                                                                                                          "referencedDeclaration": 1000,
                                                                                                          "src": "9007:14:3",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bytes2",
                                                                                                            "typeString": "bytes2"
                                                                                                          }
                                                                                                        },
                                                                                                        "nodeType": "BinaryOperation",
                                                                                                        "operator": "==",
                                                                                                        "rightExpression": {
                                                                                                          "hexValue": "307866303532",
                                                                                                          "id": 1270,
                                                                                                          "isConstant": false,
                                                                                                          "isLValue": false,
                                                                                                          "isPure": true,
                                                                                                          "kind": "number",
                                                                                                          "lValueRequested": false,
                                                                                                          "nodeType": "Literal",
                                                                                                          "src": "9025:6:3",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_rational_61522_by_1",
                                                                                                            "typeString": "int_const 61522"
                                                                                                          },
                                                                                                          "value": "0xf052"
                                                                                                        },
                                                                                                        "src": "9007:24:3",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_bool",
                                                                                                          "typeString": "bool"
                                                                                                        }
                                                                                                      },
                                                                                                      "falseBody": {
                                                                                                        "condition": {
                                                                                                          "commonType": {
                                                                                                            "typeIdentifier": "t_bytes2",
                                                                                                            "typeString": "bytes2"
                                                                                                          },
                                                                                                          "id": 1277,
                                                                                                          "isConstant": false,
                                                                                                          "isLValue": false,
                                                                                                          "isPure": false,
                                                                                                          "lValueRequested": false,
                                                                                                          "leftExpression": {
                                                                                                            "id": 1275,
                                                                                                            "name": "credentialType",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 1000,
                                                                                                            "src": "9103:14:3",
                                                                                                            "typeDescriptions": {
                                                                                                              "typeIdentifier": "t_bytes2",
                                                                                                              "typeString": "bytes2"
                                                                                                            }
                                                                                                          },
                                                                                                          "nodeType": "BinaryOperation",
                                                                                                          "operator": "==",
                                                                                                          "rightExpression": {
                                                                                                            "hexValue": "307861303034",
                                                                                                            "id": 1276,
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "kind": "number",
                                                                                                            "lValueRequested": false,
                                                                                                            "nodeType": "Literal",
                                                                                                            "src": "9121:6:3",
                                                                                                            "typeDescriptions": {
                                                                                                              "typeIdentifier": "t_rational_40964_by_1",
                                                                                                              "typeString": "int_const 40964"
                                                                                                            },
                                                                                                            "value": "0xa004"
                                                                                                          },
                                                                                                          "src": "9103:24:3",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bool",
                                                                                                            "typeString": "bool"
                                                                                                          }
                                                                                                        },
                                                                                                        "id": 1281,
                                                                                                        "nodeType": "IfStatement",
                                                                                                        "src": "9100:72:3",
                                                                                                        "trueBody": {
                                                                                                          "id": 1280,
                                                                                                          "nodeType": "Block",
                                                                                                          "src": "9129:43:3",
                                                                                                          "statements": [
                                                                                                            {
                                                                                                              "expression": {
                                                                                                                "id": 1278,
                                                                                                                "name": "permissionCredentialIdentityIssue",
                                                                                                                "nodeType": "Identifier",
                                                                                                                "overloadedDeclarations": [],
                                                                                                                "referencedDeclaration": 1010,
                                                                                                                "src": "9137:33:3",
                                                                                                                "typeDescriptions": {
                                                                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                                                                  "typeString": "string memory"
                                                                                                                }
                                                                                                              },
                                                                                                              "functionReturnParameters": 1004,
                                                                                                              "id": 1279,
                                                                                                              "nodeType": "Return",
                                                                                                              "src": "9130:40:3"
                                                                                                            }
                                                                                                          ]
                                                                                                        }
                                                                                                      },
                                                                                                      "id": 1282,
                                                                                                      "nodeType": "IfStatement",
                                                                                                      "src": "9004:168:3",
                                                                                                      "trueBody": {
                                                                                                        "id": 1274,
                                                                                                        "nodeType": "Block",
                                                                                                        "src": "9033:35:3",
                                                                                                        "statements": [
                                                                                                          {
                                                                                                            "expression": {
                                                                                                              "id": 1272,
                                                                                                              "name": "permissionCredentialIssue",
                                                                                                              "nodeType": "Identifier",
                                                                                                              "overloadedDeclarations": [],
                                                                                                              "referencedDeclaration": 1006,
                                                                                                              "src": "9041:25:3",
                                                                                                              "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                                                                "typeString": "string memory"
                                                                                                              }
                                                                                                            },
                                                                                                            "functionReturnParameters": 1004,
                                                                                                            "id": 1273,
                                                                                                            "nodeType": "Return",
                                                                                                            "src": "9034:32:3"
                                                                                                          }
                                                                                                        ]
                                                                                                      }
                                                                                                    },
                                                                                                    "id": 1283,
                                                                                                    "nodeType": "IfStatement",
                                                                                                    "src": "8906:266:3",
                                                                                                    "trueBody": {
                                                                                                      "id": 1268,
                                                                                                      "nodeType": "Block",
                                                                                                      "src": "8935:42:3",
                                                                                                      "statements": [
                                                                                                        {
                                                                                                          "expression": {
                                                                                                            "id": 1266,
                                                                                                            "name": "permissionCredentialContactIssue",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 1014,
                                                                                                            "src": "8943:32:3",
                                                                                                            "typeDescriptions": {
                                                                                                              "typeIdentifier": "t_string_memory_ptr",
                                                                                                              "typeString": "string memory"
                                                                                                            }
                                                                                                          },
                                                                                                          "functionReturnParameters": 1004,
                                                                                                          "id": 1267,
                                                                                                          "nodeType": "Return",
                                                                                                          "src": "8936:39:3"
                                                                                                        }
                                                                                                      ]
                                                                                                    }
                                                                                                  },
                                                                                                  "id": 1284,
                                                                                                  "nodeType": "IfStatement",
                                                                                                  "src": "8812:360:3",
                                                                                                  "trueBody": {
                                                                                                    "id": 1262,
                                                                                                    "nodeType": "Block",
                                                                                                    "src": "8841:42:3",
                                                                                                    "statements": [
                                                                                                      {
                                                                                                        "expression": {
                                                                                                          "id": 1260,
                                                                                                          "name": "permissionCredentialContactIssue",
                                                                                                          "nodeType": "Identifier",
                                                                                                          "overloadedDeclarations": [],
                                                                                                          "referencedDeclaration": 1014,
                                                                                                          "src": "8849:32:3",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                                            "typeString": "string memory"
                                                                                                          }
                                                                                                        },
                                                                                                        "functionReturnParameters": 1004,
                                                                                                        "id": 1261,
                                                                                                        "nodeType": "Return",
                                                                                                        "src": "8842:39:3"
                                                                                                      }
                                                                                                    ]
                                                                                                  }
                                                                                                },
                                                                                                "id": 1285,
                                                                                                "nodeType": "IfStatement",
                                                                                                "src": "8708:464:3",
                                                                                                "trueBody": {
                                                                                                  "id": 1256,
                                                                                                  "nodeType": "Block",
                                                                                                  "src": "8737:35:3",
                                                                                                  "statements": [
                                                                                                    {
                                                                                                      "expression": {
                                                                                                        "id": 1254,
                                                                                                        "name": "permissionCredentialIssue",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 1006,
                                                                                                        "src": "8745:25:3",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_string_memory_ptr",
                                                                                                          "typeString": "string memory"
                                                                                                        }
                                                                                                      },
                                                                                                      "functionReturnParameters": 1004,
                                                                                                      "id": 1255,
                                                                                                      "nodeType": "Return",
                                                                                                      "src": "8738:32:3"
                                                                                                    }
                                                                                                  ]
                                                                                                }
                                                                                              },
                                                                                              "id": 1286,
                                                                                              "nodeType": "IfStatement",
                                                                                              "src": "8606:566:3",
                                                                                              "trueBody": {
                                                                                                "id": 1250,
                                                                                                "nodeType": "Block",
                                                                                                "src": "8635:43:3",
                                                                                                "statements": [
                                                                                                  {
                                                                                                    "expression": {
                                                                                                      "id": 1248,
                                                                                                      "name": "permissionCredentialIdentityIssue",
                                                                                                      "nodeType": "Identifier",
                                                                                                      "overloadedDeclarations": [],
                                                                                                      "referencedDeclaration": 1010,
                                                                                                      "src": "8643:33:3",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                                        "typeString": "string memory"
                                                                                                      }
                                                                                                    },
                                                                                                    "functionReturnParameters": 1004,
                                                                                                    "id": 1249,
                                                                                                    "nodeType": "Return",
                                                                                                    "src": "8636:40:3"
                                                                                                  }
                                                                                                ]
                                                                                              }
                                                                                            },
                                                                                            "id": 1287,
                                                                                            "nodeType": "IfStatement",
                                                                                            "src": "8511:661:3",
                                                                                            "trueBody": {
                                                                                              "id": 1244,
                                                                                              "nodeType": "Block",
                                                                                              "src": "8540:35:3",
                                                                                              "statements": [
                                                                                                {
                                                                                                  "expression": {
                                                                                                    "id": 1242,
                                                                                                    "name": "permissionCredentialIssue",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 1006,
                                                                                                    "src": "8548:25:3",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_string_memory_ptr",
                                                                                                      "typeString": "string memory"
                                                                                                    }
                                                                                                  },
                                                                                                  "functionReturnParameters": 1004,
                                                                                                  "id": 1243,
                                                                                                  "nodeType": "Return",
                                                                                                  "src": "8541:32:3"
                                                                                                }
                                                                                              ]
                                                                                            }
                                                                                          },
                                                                                          "id": 1288,
                                                                                          "nodeType": "IfStatement",
                                                                                          "src": "8416:756:3",
                                                                                          "trueBody": {
                                                                                            "id": 1238,
                                                                                            "nodeType": "Block",
                                                                                            "src": "8445:35:3",
                                                                                            "statements": [
                                                                                              {
                                                                                                "expression": {
                                                                                                  "id": 1236,
                                                                                                  "name": "permissionCredentialIssue",
                                                                                                  "nodeType": "Identifier",
                                                                                                  "overloadedDeclarations": [],
                                                                                                  "referencedDeclaration": 1006,
                                                                                                  "src": "8453:25:3",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                                    "typeString": "string memory"
                                                                                                  }
                                                                                                },
                                                                                                "functionReturnParameters": 1004,
                                                                                                "id": 1237,
                                                                                                "nodeType": "Return",
                                                                                                "src": "8446:32:3"
                                                                                              }
                                                                                            ]
                                                                                          }
                                                                                        },
                                                                                        "id": 1289,
                                                                                        "nodeType": "IfStatement",
                                                                                        "src": "8315:857:3",
                                                                                        "trueBody": {
                                                                                          "id": 1232,
                                                                                          "nodeType": "Block",
                                                                                          "src": "8344:35:3",
                                                                                          "statements": [
                                                                                            {
                                                                                              "expression": {
                                                                                                "id": 1230,
                                                                                                "name": "permissionCredentialIssue",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1006,
                                                                                                "src": "8352:25:3",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                                                  "typeString": "string memory"
                                                                                                }
                                                                                              },
                                                                                              "functionReturnParameters": 1004,
                                                                                              "id": 1231,
                                                                                              "nodeType": "Return",
                                                                                              "src": "8345:32:3"
                                                                                            }
                                                                                          ]
                                                                                        }
                                                                                      },
                                                                                      "id": 1290,
                                                                                      "nodeType": "IfStatement",
                                                                                      "src": "8207:965:3",
                                                                                      "trueBody": {
                                                                                        "id": 1226,
                                                                                        "nodeType": "Block",
                                                                                        "src": "8236:43:3",
                                                                                        "statements": [
                                                                                          {
                                                                                            "expression": {
                                                                                              "id": 1224,
                                                                                              "name": "permissionCredentialIdentityIssue",
                                                                                              "nodeType": "Identifier",
                                                                                              "overloadedDeclarations": [],
                                                                                              "referencedDeclaration": 1010,
                                                                                              "src": "8244:33:3",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                                                "typeString": "string memory"
                                                                                              }
                                                                                            },
                                                                                            "functionReturnParameters": 1004,
                                                                                            "id": 1225,
                                                                                            "nodeType": "Return",
                                                                                            "src": "8237:40:3"
                                                                                          }
                                                                                        ]
                                                                                      }
                                                                                    },
                                                                                    "id": 1291,
                                                                                    "nodeType": "IfStatement",
                                                                                    "src": "8114:1058:3",
                                                                                    "trueBody": {
                                                                                      "id": 1220,
                                                                                      "nodeType": "Block",
                                                                                      "src": "8143:35:3",
                                                                                      "statements": [
                                                                                        {
                                                                                          "expression": {
                                                                                            "id": 1218,
                                                                                            "name": "permissionCredentialIssue",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1006,
                                                                                            "src": "8151:25:3",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_string_memory_ptr",
                                                                                              "typeString": "string memory"
                                                                                            }
                                                                                          },
                                                                                          "functionReturnParameters": 1004,
                                                                                          "id": 1219,
                                                                                          "nodeType": "Return",
                                                                                          "src": "8144:32:3"
                                                                                        }
                                                                                      ]
                                                                                    }
                                                                                  },
                                                                                  "id": 1292,
                                                                                  "nodeType": "IfStatement",
                                                                                  "src": "8021:1151:3",
                                                                                  "trueBody": {
                                                                                    "id": 1214,
                                                                                    "nodeType": "Block",
                                                                                    "src": "8050:35:3",
                                                                                    "statements": [
                                                                                      {
                                                                                        "expression": {
                                                                                          "id": 1212,
                                                                                          "name": "permissionCredentialIssue",
                                                                                          "nodeType": "Identifier",
                                                                                          "overloadedDeclarations": [],
                                                                                          "referencedDeclaration": 1006,
                                                                                          "src": "8058:25:3",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                            "typeString": "string memory"
                                                                                          }
                                                                                        },
                                                                                        "functionReturnParameters": 1004,
                                                                                        "id": 1213,
                                                                                        "nodeType": "Return",
                                                                                        "src": "8051:32:3"
                                                                                      }
                                                                                    ]
                                                                                  }
                                                                                },
                                                                                "id": 1293,
                                                                                "nodeType": "IfStatement",
                                                                                "src": "7917:1255:3",
                                                                                "trueBody": {
                                                                                  "id": 1208,
                                                                                  "nodeType": "Block",
                                                                                  "src": "7946:43:3",
                                                                                  "statements": [
                                                                                    {
                                                                                      "expression": {
                                                                                        "id": 1206,
                                                                                        "name": "permissionCredentialIdentityIssue",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1010,
                                                                                        "src": "7954:33:3",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_string_memory_ptr",
                                                                                          "typeString": "string memory"
                                                                                        }
                                                                                      },
                                                                                      "functionReturnParameters": 1004,
                                                                                      "id": 1207,
                                                                                      "nodeType": "Return",
                                                                                      "src": "7947:40:3"
                                                                                    }
                                                                                  ]
                                                                                }
                                                                              },
                                                                              "id": 1294,
                                                                              "nodeType": "IfStatement",
                                                                              "src": "7817:1355:3",
                                                                              "trueBody": {
                                                                                "id": 1202,
                                                                                "nodeType": "Block",
                                                                                "src": "7846:43:3",
                                                                                "statements": [
                                                                                  {
                                                                                    "expression": {
                                                                                      "id": 1200,
                                                                                      "name": "permissionCredentialIdentityIssue",
                                                                                      "nodeType": "Identifier",
                                                                                      "overloadedDeclarations": [],
                                                                                      "referencedDeclaration": 1010,
                                                                                      "src": "7854:33:3",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                      }
                                                                                    },
                                                                                    "functionReturnParameters": 1004,
                                                                                    "id": 1201,
                                                                                    "nodeType": "Return",
                                                                                    "src": "7847:40:3"
                                                                                  }
                                                                                ]
                                                                              }
                                                                            },
                                                                            "id": 1295,
                                                                            "nodeType": "IfStatement",
                                                                            "src": "7717:1455:3",
                                                                            "trueBody": {
                                                                              "id": 1196,
                                                                              "nodeType": "Block",
                                                                              "src": "7746:35:3",
                                                                              "statements": [
                                                                                {
                                                                                  "expression": {
                                                                                    "id": 1194,
                                                                                    "name": "permissionCredentialIssue",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1006,
                                                                                    "src": "7754:25:3",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_string_memory_ptr",
                                                                                      "typeString": "string memory"
                                                                                    }
                                                                                  },
                                                                                  "functionReturnParameters": 1004,
                                                                                  "id": 1195,
                                                                                  "nodeType": "Return",
                                                                                  "src": "7747:32:3"
                                                                                }
                                                                              ]
                                                                            }
                                                                          },
                                                                          "id": 1296,
                                                                          "nodeType": "IfStatement",
                                                                          "src": "7617:1555:3",
                                                                          "trueBody": {
                                                                            "id": 1190,
                                                                            "nodeType": "Block",
                                                                            "src": "7646:35:3",
                                                                            "statements": [
                                                                              {
                                                                                "expression": {
                                                                                  "id": 1188,
                                                                                  "name": "permissionCredentialIssue",
                                                                                  "nodeType": "Identifier",
                                                                                  "overloadedDeclarations": [],
                                                                                  "referencedDeclaration": 1006,
                                                                                  "src": "7654:25:3",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                    "typeString": "string memory"
                                                                                  }
                                                                                },
                                                                                "functionReturnParameters": 1004,
                                                                                "id": 1189,
                                                                                "nodeType": "Return",
                                                                                "src": "7647:32:3"
                                                                              }
                                                                            ]
                                                                          }
                                                                        },
                                                                        "id": 1297,
                                                                        "nodeType": "IfStatement",
                                                                        "src": "7514:1658:3",
                                                                        "trueBody": {
                                                                          "id": 1184,
                                                                          "nodeType": "Block",
                                                                          "src": "7543:35:3",
                                                                          "statements": [
                                                                            {
                                                                              "expression": {
                                                                                "id": 1182,
                                                                                "name": "permissionCredentialIssue",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1006,
                                                                                "src": "7551:25:3",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                                  "typeString": "string memory"
                                                                                }
                                                                              },
                                                                              "functionReturnParameters": 1004,
                                                                              "id": 1183,
                                                                              "nodeType": "Return",
                                                                              "src": "7544:32:3"
                                                                            }
                                                                          ]
                                                                        }
                                                                      },
                                                                      "id": 1298,
                                                                      "nodeType": "IfStatement",
                                                                      "src": "7411:1761:3",
                                                                      "trueBody": {
                                                                        "id": 1178,
                                                                        "nodeType": "Block",
                                                                        "src": "7440:35:3",
                                                                        "statements": [
                                                                          {
                                                                            "expression": {
                                                                              "id": 1176,
                                                                              "name": "permissionCredentialIssue",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 1006,
                                                                              "src": "7448:25:3",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                                "typeString": "string memory"
                                                                              }
                                                                            },
                                                                            "functionReturnParameters": 1004,
                                                                            "id": 1177,
                                                                            "nodeType": "Return",
                                                                            "src": "7441:32:3"
                                                                          }
                                                                        ]
                                                                      }
                                                                    },
                                                                    "id": 1299,
                                                                    "nodeType": "IfStatement",
                                                                    "src": "7313:1859:3",
                                                                    "trueBody": {
                                                                      "id": 1172,
                                                                      "nodeType": "Block",
                                                                      "src": "7342:42:3",
                                                                      "statements": [
                                                                        {
                                                                          "expression": {
                                                                            "id": 1170,
                                                                            "name": "permissionCredentialContactIssue",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1014,
                                                                            "src": "7350:32:3",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_string_memory_ptr",
                                                                              "typeString": "string memory"
                                                                            }
                                                                          },
                                                                          "functionReturnParameters": 1004,
                                                                          "id": 1171,
                                                                          "nodeType": "Return",
                                                                          "src": "7343:39:3"
                                                                        }
                                                                      ]
                                                                    }
                                                                  },
                                                                  "id": 1300,
                                                                  "nodeType": "IfStatement",
                                                                  "src": "7219:1953:3",
                                                                  "trueBody": {
                                                                    "id": 1166,
                                                                    "nodeType": "Block",
                                                                    "src": "7248:42:3",
                                                                    "statements": [
                                                                      {
                                                                        "expression": {
                                                                          "id": 1164,
                                                                          "name": "permissionCredentialContactIssue",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 1014,
                                                                          "src": "7256:32:3",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                            "typeString": "string memory"
                                                                          }
                                                                        },
                                                                        "functionReturnParameters": 1004,
                                                                        "id": 1165,
                                                                        "nodeType": "Return",
                                                                        "src": "7249:39:3"
                                                                      }
                                                                    ]
                                                                  }
                                                                },
                                                                "id": 1301,
                                                                "nodeType": "IfStatement",
                                                                "src": "7113:2059:3",
                                                                "trueBody": {
                                                                  "id": 1160,
                                                                  "nodeType": "Block",
                                                                  "src": "7142:35:3",
                                                                  "statements": [
                                                                    {
                                                                      "expression": {
                                                                        "id": 1158,
                                                                        "name": "permissionCredentialIssue",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1006,
                                                                        "src": "7150:25:3",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_string_memory_ptr",
                                                                          "typeString": "string memory"
                                                                        }
                                                                      },
                                                                      "functionReturnParameters": 1004,
                                                                      "id": 1159,
                                                                      "nodeType": "Return",
                                                                      "src": "7143:32:3"
                                                                    }
                                                                  ]
                                                                }
                                                              },
                                                              "id": 1302,
                                                              "nodeType": "IfStatement",
                                                              "src": "7007:2165:3",
                                                              "trueBody": {
                                                                "id": 1154,
                                                                "nodeType": "Block",
                                                                "src": "7036:35:3",
                                                                "statements": [
                                                                  {
                                                                    "expression": {
                                                                      "id": 1152,
                                                                      "name": "permissionCredentialIssue",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 1006,
                                                                      "src": "7044:25:3",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                      }
                                                                    },
                                                                    "functionReturnParameters": 1004,
                                                                    "id": 1153,
                                                                    "nodeType": "Return",
                                                                    "src": "7037:32:3"
                                                                  }
                                                                ]
                                                              }
                                                            },
                                                            "id": 1303,
                                                            "nodeType": "IfStatement",
                                                            "src": "6894:2278:3",
                                                            "trueBody": {
                                                              "id": 1148,
                                                              "nodeType": "Block",
                                                              "src": "6923:35:3",
                                                              "statements": [
                                                                {
                                                                  "expression": {
                                                                    "id": 1146,
                                                                    "name": "permissionCredentialIssue",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1006,
                                                                    "src": "6931:25:3",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_string_memory_ptr",
                                                                      "typeString": "string memory"
                                                                    }
                                                                  },
                                                                  "functionReturnParameters": 1004,
                                                                  "id": 1147,
                                                                  "nodeType": "Return",
                                                                  "src": "6924:32:3"
                                                                }
                                                              ]
                                                            }
                                                          },
                                                          "id": 1304,
                                                          "nodeType": "IfStatement",
                                                          "src": "6781:2391:3",
                                                          "trueBody": {
                                                            "id": 1142,
                                                            "nodeType": "Block",
                                                            "src": "6810:35:3",
                                                            "statements": [
                                                              {
                                                                "expression": {
                                                                  "id": 1140,
                                                                  "name": "permissionCredentialIssue",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 1006,
                                                                  "src": "6818:25:3",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                  }
                                                                },
                                                                "functionReturnParameters": 1004,
                                                                "id": 1141,
                                                                "nodeType": "Return",
                                                                "src": "6811:32:3"
                                                              }
                                                            ]
                                                          }
                                                        },
                                                        "id": 1305,
                                                        "nodeType": "IfStatement",
                                                        "src": "6670:2502:3",
                                                        "trueBody": {
                                                          "id": 1136,
                                                          "nodeType": "Block",
                                                          "src": "6699:35:3",
                                                          "statements": [
                                                            {
                                                              "expression": {
                                                                "id": 1134,
                                                                "name": "permissionCredentialIssue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1006,
                                                                "src": "6707:25:3",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                  "typeString": "string memory"
                                                                }
                                                              },
                                                              "functionReturnParameters": 1004,
                                                              "id": 1135,
                                                              "nodeType": "Return",
                                                              "src": "6700:32:3"
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      "id": 1306,
                                                      "nodeType": "IfStatement",
                                                      "src": "6559:2613:3",
                                                      "trueBody": {
                                                        "id": 1130,
                                                        "nodeType": "Block",
                                                        "src": "6588:35:3",
                                                        "statements": [
                                                          {
                                                            "expression": {
                                                              "id": 1128,
                                                              "name": "permissionCredentialIssue",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 1006,
                                                              "src": "6596:25:3",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                              }
                                                            },
                                                            "functionReturnParameters": 1004,
                                                            "id": 1129,
                                                            "nodeType": "Return",
                                                            "src": "6589:32:3"
                                                          }
                                                        ]
                                                      }
                                                    },
                                                    "id": 1307,
                                                    "nodeType": "IfStatement",
                                                    "src": "6462:2710:3",
                                                    "trueBody": {
                                                      "id": 1124,
                                                      "nodeType": "Block",
                                                      "src": "6491:35:3",
                                                      "statements": [
                                                        {
                                                          "expression": {
                                                            "id": 1122,
                                                            "name": "permissionCredentialIssue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1006,
                                                            "src": "6499:25:3",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_string_memory_ptr",
                                                              "typeString": "string memory"
                                                            }
                                                          },
                                                          "functionReturnParameters": 1004,
                                                          "id": 1123,
                                                          "nodeType": "Return",
                                                          "src": "6492:32:3"
                                                        }
                                                      ]
                                                    }
                                                  },
                                                  "id": 1308,
                                                  "nodeType": "IfStatement",
                                                  "src": "6354:2818:3",
                                                  "trueBody": {
                                                    "id": 1118,
                                                    "nodeType": "Block",
                                                    "src": "6383:43:3",
                                                    "statements": [
                                                      {
                                                        "expression": {
                                                          "id": 1116,
                                                          "name": "permissionCredentialIdentityIssue",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 1010,
                                                          "src": "6391:33:3",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                          }
                                                        },
                                                        "functionReturnParameters": 1004,
                                                        "id": 1117,
                                                        "nodeType": "Return",
                                                        "src": "6384:40:3"
                                                      }
                                                    ]
                                                  }
                                                },
                                                "id": 1309,
                                                "nodeType": "IfStatement",
                                                "src": "6247:2925:3",
                                                "trueBody": {
                                                  "id": 1112,
                                                  "nodeType": "Block",
                                                  "src": "6276:35:3",
                                                  "statements": [
                                                    {
                                                      "expression": {
                                                        "id": 1110,
                                                        "name": "permissionCredentialIssue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1006,
                                                        "src": "6284:25:3",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_string_memory_ptr",
                                                          "typeString": "string memory"
                                                        }
                                                      },
                                                      "functionReturnParameters": 1004,
                                                      "id": 1111,
                                                      "nodeType": "Return",
                                                      "src": "6277:32:3"
                                                    }
                                                  ]
                                                }
                                              },
                                              "id": 1310,
                                              "nodeType": "IfStatement",
                                              "src": "6143:3029:3",
                                              "trueBody": {
                                                "id": 1106,
                                                "nodeType": "Block",
                                                "src": "6172:35:3",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "id": 1104,
                                                      "name": "permissionCredentialIssue",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1006,
                                                      "src": "6180:25:3",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                      }
                                                    },
                                                    "functionReturnParameters": 1004,
                                                    "id": 1105,
                                                    "nodeType": "Return",
                                                    "src": "6173:32:3"
                                                  }
                                                ]
                                              }
                                            },
                                            "id": 1311,
                                            "nodeType": "IfStatement",
                                            "src": "6039:3133:3",
                                            "trueBody": {
                                              "id": 1100,
                                              "nodeType": "Block",
                                              "src": "6068:35:3",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 1098,
                                                    "name": "permissionCredentialIssue",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1006,
                                                    "src": "6076:25:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_string_memory_ptr",
                                                      "typeString": "string memory"
                                                    }
                                                  },
                                                  "functionReturnParameters": 1004,
                                                  "id": 1099,
                                                  "nodeType": "Return",
                                                  "src": "6069:32:3"
                                                }
                                              ]
                                            }
                                          },
                                          "id": 1312,
                                          "nodeType": "IfStatement",
                                          "src": "5937:3235:3",
                                          "trueBody": {
                                            "id": 1094,
                                            "nodeType": "Block",
                                            "src": "5966:35:3",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 1092,
                                                  "name": "permissionCredentialIssue",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1006,
                                                  "src": "5974:25:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                  }
                                                },
                                                "functionReturnParameters": 1004,
                                                "id": 1093,
                                                "nodeType": "Return",
                                                "src": "5967:32:3"
                                              }
                                            ]
                                          }
                                        },
                                        "id": 1313,
                                        "nodeType": "IfStatement",
                                        "src": "5835:3337:3",
                                        "trueBody": {
                                          "id": 1088,
                                          "nodeType": "Block",
                                          "src": "5864:35:3",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 1086,
                                                "name": "permissionCredentialIssue",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1006,
                                                "src": "5872:25:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_string_memory_ptr",
                                                  "typeString": "string memory"
                                                }
                                              },
                                              "functionReturnParameters": 1004,
                                              "id": 1087,
                                              "nodeType": "Return",
                                              "src": "5865:32:3"
                                            }
                                          ]
                                        }
                                      },
                                      "id": 1314,
                                      "nodeType": "IfStatement",
                                      "src": "5733:3439:3",
                                      "trueBody": {
                                        "id": 1082,
                                        "nodeType": "Block",
                                        "src": "5762:35:3",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 1080,
                                              "name": "permissionCredentialIssue",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1006,
                                              "src": "5770:25:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            },
                                            "functionReturnParameters": 1004,
                                            "id": 1081,
                                            "nodeType": "Return",
                                            "src": "5763:32:3"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 1315,
                                    "nodeType": "IfStatement",
                                    "src": "5631:3541:3",
                                    "trueBody": {
                                      "id": 1076,
                                      "nodeType": "Block",
                                      "src": "5660:35:3",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 1074,
                                            "name": "permissionCredentialIssue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1006,
                                            "src": "5668:25:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          },
                                          "functionReturnParameters": 1004,
                                          "id": 1075,
                                          "nodeType": "Return",
                                          "src": "5661:32:3"
                                        }
                                      ]
                                    }
                                  },
                                  "id": 1316,
                                  "nodeType": "IfStatement",
                                  "src": "5543:3629:3",
                                  "trueBody": {
                                    "id": 1070,
                                    "nodeType": "Block",
                                    "src": "5572:35:3",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 1068,
                                          "name": "permissionCredentialIssue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1006,
                                          "src": "5580:25:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "functionReturnParameters": 1004,
                                        "id": 1069,
                                        "nodeType": "Return",
                                        "src": "5573:32:3"
                                      }
                                    ]
                                  }
                                },
                                "id": 1317,
                                "nodeType": "IfStatement",
                                "src": "5444:3728:3",
                                "trueBody": {
                                  "id": 1064,
                                  "nodeType": "Block",
                                  "src": "5473:35:3",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 1062,
                                        "name": "permissionCredentialIssue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1006,
                                        "src": "5481:25:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      "functionReturnParameters": 1004,
                                      "id": 1063,
                                      "nodeType": "Return",
                                      "src": "5474:32:3"
                                    }
                                  ]
                                }
                              },
                              "id": 1318,
                              "nodeType": "IfStatement",
                              "src": "5345:3827:3",
                              "trueBody": {
                                "id": 1058,
                                "nodeType": "Block",
                                "src": "5374:35:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 1056,
                                      "name": "permissionCredentialIssue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1006,
                                      "src": "5382:25:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    "functionReturnParameters": 1004,
                                    "id": 1057,
                                    "nodeType": "Return",
                                    "src": "5375:32:3"
                                  }
                                ]
                              }
                            },
                            "id": 1319,
                            "nodeType": "IfStatement",
                            "src": "5250:3922:3",
                            "trueBody": {
                              "id": 1052,
                              "nodeType": "Block",
                              "src": "5279:35:3",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 1050,
                                    "name": "permissionCredentialIssue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1006,
                                    "src": "5287:25:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "functionReturnParameters": 1004,
                                  "id": 1051,
                                  "nodeType": "Return",
                                  "src": "5280:32:3"
                                }
                              ]
                            }
                          },
                          "id": 1320,
                          "nodeType": "IfStatement",
                          "src": "5159:4013:3",
                          "trueBody": {
                            "id": 1046,
                            "nodeType": "Block",
                            "src": "5188:35:3",
                            "statements": [
                              {
                                "expression": {
                                  "id": 1044,
                                  "name": "permissionCredentialIssue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1006,
                                  "src": "5196:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "functionReturnParameters": 1004,
                                "id": 1045,
                                "nodeType": "Return",
                                "src": "5189:32:3"
                              }
                            ]
                          }
                        },
                        "id": 1321,
                        "nodeType": "IfStatement",
                        "src": "5072:4100:3",
                        "trueBody": {
                          "id": 1040,
                          "nodeType": "Block",
                          "src": "5101:35:3",
                          "statements": [
                            {
                              "expression": {
                                "id": 1038,
                                "name": "permissionCredentialIssue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1006,
                                "src": "5109:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 1004,
                              "id": 1039,
                              "nodeType": "Return",
                              "src": "5102:32:3"
                            }
                          ]
                        }
                      },
                      "id": 1322,
                      "nodeType": "IfStatement",
                      "src": "4976:4196:3",
                      "trueBody": {
                        "id": 1034,
                        "nodeType": "Block",
                        "src": "5005:35:3",
                        "statements": [
                          {
                            "expression": {
                              "id": 1032,
                              "name": "permissionCredentialIssue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1006,
                              "src": "5013:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 1004,
                            "id": 1033,
                            "nodeType": "Return",
                            "src": "5006:32:3"
                          }
                        ]
                      }
                    },
                    "id": 1323,
                    "nodeType": "IfStatement",
                    "src": "4880:4292:3",
                    "trueBody": {
                      "id": 1028,
                      "nodeType": "Block",
                      "src": "4909:35:3",
                      "statements": [
                        {
                          "expression": {
                            "id": 1026,
                            "name": "permissionCredentialIssue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1006,
                            "src": "4917:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "functionReturnParameters": 1004,
                          "id": 1027,
                          "nodeType": "Return",
                          "src": "4910:32:3"
                        }
                      ]
                    }
                  },
                  "id": 1324,
                  "nodeType": "IfStatement",
                  "src": "4788:4384:3",
                  "trueBody": {
                    "id": 1022,
                    "nodeType": "Block",
                    "src": "4817:35:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 1020,
                          "name": "permissionCredentialIssue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1006,
                          "src": "4825:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1004,
                        "id": 1021,
                        "nodeType": "Return",
                        "src": "4818:32:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "",
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9210:2:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 1004,
                  "id": 1326,
                  "nodeType": "Return",
                  "src": "9203:9:3"
                }
              ]
            },
            "id": 1328,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPermissionOfCredentialTypeHash",
            "nameLocation": "4443:33:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1000,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "4484:14:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1328,
                  "src": "4477:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 999,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "4477:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4476:23:3"
            },
            "returnParameters": {
              "id": 1004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1003,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1328,
                  "src": "4522:13:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1002,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4522:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4521:15:3"
            },
            "scope": 1391,
            "src": "4434:4785:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1362,
              "nodeType": "Block",
              "src": "9332:289:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9350:24:3",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 1339,
                              "name": "permission",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1332,
                              "src": "9359:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9371:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1338,
                            "name": "isEqual",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1390,
                            "src": "9351:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (string memory,string memory) pure returns (bool)"
                            }
                          },
                          "id": 1341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9351:23:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a207065726d697373696f6e206d6179206e6f7420626520656d707479",
                        "id": 1343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9376:42:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6b4f202014dd971425ace122e9637c1169c295dd661851d83f7fb0e1a27d27f7",
                          "typeString": "literal_string \"Permissions: permission may not be empty\""
                        },
                        "value": "Permissions: permission may not be empty"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6b4f202014dd971425ace122e9637c1169c295dd661851d83f7fb0e1a27d27f7",
                          "typeString": "literal_string \"Permissions: permission may not be empty\""
                        }
                      ],
                      "id": 1337,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9342:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9342:77:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1345,
                  "nodeType": "ExpressionStatement",
                  "src": "9342:77:3"
                },
                {
                  "assignments": [
                    1347
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1347,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "9437:7:3",
                      "nodeType": "VariableDeclaration",
                      "scope": 1362,
                      "src": "9429:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1346,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9429:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1351,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1349,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1330,
                        "src": "9461:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1348,
                      "name": "checkOperator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 972,
                      "src": "9447:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view returns (address)"
                      }
                    },
                    "id": 1350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9447:23:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9429:41:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1354,
                            "name": "primary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1347,
                            "src": "9506:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1355,
                            "name": "permission",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1332,
                            "src": "9515:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1353,
                          "name": "checkAddressScope",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 784,
                          "src": "9488:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,string memory) view returns (bool)"
                          }
                        },
                        "id": 1356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9488:38:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b7320726571756573746564207065726d697373696f6e",
                        "id": 1357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9528:61:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d0b8e3b2511f65fa5861542db7c5004f53c28c4f8e0959b342e0a3b9e762e41c",
                          "typeString": "literal_string \"Permissions: primary of operator lacks requested permission\""
                        },
                        "value": "Permissions: primary of operator lacks requested permission"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d0b8e3b2511f65fa5861542db7c5004f53c28c4f8e0959b342e0a3b9e762e41c",
                          "typeString": "literal_string \"Permissions: primary of operator lacks requested permission\""
                        }
                      ],
                      "id": 1352,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9480:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1358,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9480:110:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1359,
                  "nodeType": "ExpressionStatement",
                  "src": "9480:110:3"
                },
                {
                  "expression": {
                    "id": 1360,
                    "name": "primary",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1347,
                    "src": "9607:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1336,
                  "id": 1361,
                  "nodeType": "Return",
                  "src": "9600:14:3"
                }
              ]
            },
            "functionSelector": "07db6d1b",
            "id": 1363,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkOperatorPermission",
            "nameLocation": "9234:23:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1330,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "9266:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1363,
                  "src": "9258:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9258:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1332,
                  "mutability": "mutable",
                  "name": "permission",
                  "nameLocation": "9290:10:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1363,
                  "src": "9276:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1331,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9276:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9257:44:3"
            },
            "returnParameters": {
              "id": 1336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1335,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1363,
                  "src": "9323:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1334,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9323:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9322:9:3"
            },
            "scope": 1391,
            "src": "9225:396:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1389,
              "nodeType": "Block",
              "src": "9705:94:3",
              "statements": [
                {
                  "expression": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 1386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "components": [
                                    {
                                      "id": 1375,
                                      "name": "a",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1365,
                                      "src": "9751:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "id": 1376,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9750:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 1373,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "9733:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "9733:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9733:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1372,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967288,
                            "src": "9723:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 1378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9723:32:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "components": [
                                    {
                                      "id": 1382,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1367,
                                      "src": "9787:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "id": 1383,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9786:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 1380,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "9769:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "9769:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9769:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1379,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967288,
                            "src": "9759:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 1385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9759:32:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "9723:68:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 1387,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9722:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1371,
                  "id": 1388,
                  "nodeType": "Return",
                  "src": "9715:77:3"
                }
              ]
            },
            "functionSelector": "465c4105",
            "id": 1390,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEqual",
            "nameLocation": "9636:7:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1365,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "9658:1:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1390,
                  "src": "9644:15:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1364,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9644:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1367,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "9675:1:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1390,
                  "src": "9661:15:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1366,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9661:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9643:34:3"
            },
            "returnParameters": {
              "id": 1371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1370,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1390,
                  "src": "9699:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1369,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9699:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9698:6:3"
            },
            "scope": 1391,
            "src": "9627:172:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 1392,
        "src": "133:9668:3",
        "usedErrors": []
      }
    ],
    "src": "32:9770:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.4+commit.c7e474f2.Emscripten.clang"
  },
  "networks": {
    "1480": {
      "events": {},
      "links": {},
      "address": "0x823e6B949D4972230cc9637FE83EdB080e0D72dd",
      "transactionHash": "0x3e24104d673e360ea5d6fe7965b4ce0dc9906a76bcf285b26d686a943c67d533"
    },
    "1481": {
      "events": {},
      "links": {},
      "address": "0xDC088C3D1dC820De88A1b0DCCB25bA6B6f4A74ba",
      "transactionHash": "0x53659bcae7435b94e74649a6782a4d9ea2dd00c849dc4285e05a1ce2b31b0c87"
    },
    "1482": {
      "events": {},
      "links": {},
      "address": "0x94710f19BB98bd444F984BBD8624aF2b3F9471eE",
      "transactionHash": "0xa5ebd26f4e3db1b8e4f8f12d7b935e769b10901dc3176bbc50249284b920a146"
    },
    "1483": {
      "events": {},
      "links": {},
      "address": "0xB457b50B6914A17Be513eD17c4aF9A9FECDB164C",
      "transactionHash": "0xeee73be94436ae6d5d7b54b8eb97c9206ab779c3a0f51f2f72b42621cdad9615"
    },
    "2020": {
      "events": {},
      "links": {},
      "address": "0x6209341344F62E7576a4cd1ca96BEe16a61510dA",
      "transactionHash": "0xa4bcff1fefcbe53c50ada0fd5f21bbcc6c310f755845e53d80877222dc368a96"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2024-07-15T16:11:43.366Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}